Some programming languages (e.g., Java) allow for data reflection mechanisms by which objects in currently executing processes can be examined by another process to determine or extract meta-data such as their class, fields, methods, constructors, their inheritance relationships, etc.