1. A computer-implemented method for characterizing artificiality in object code, the method comprising: receiving source code of a program; receiving one or more pieces of object code of the program; identifying a construct in the object code; determining if the construct is physically present in the source code; if the construct is not physically present, determining if the construct is logically present in the source code, wherein a construct is logically present if it is required by the programming language; if so, setting a construct flag to indicate that the construct is “synthesized;” if not, setting the construct flag to indicate that the construct is “synthetic;” and making the construct flag available to a reflective API.