Capability of some object-oriented programming languages to examine the type or properties of an object at runtime