The document discusses abstract and precise recovery of UML class diagram constituents from source code. It defines what abstract and precise mean in this context. It studies 36 UML constituents across 4 categories to determine which can be recovered abstractly and precisely from C++, Java and Smalltalk source code. Algorithms are implemented in the Ptidej tool suite to reverse engineer Java source code abstractly and precisely.