Hi Pengcheng: please can you use better, self-explanatory names in your checker: map -> storedImmediateParts global -> globalObjects map2 -> constructed Objects Use a better name than "flag". Please can you explain where you deal with the immediate computed parts: objects returned by methods on this. How do you deal with the collections? Please can you document your program using the numbering in: http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/object-formulation.html Please can you create a subaspect that checks the strong Law of Demeter. -- Karl