Robert I. Eachus wrote: > >> Sometimes the violations are necessary because the formal interface to the components of a class excludes necessary operations << I think that the Demeter proponents are aware of this and recognize that the interfaces can wind up with many trivial and non-essential functions pushed back into the supplier package to spare the client the complications of navigating and interpreting supplied data types. In Ada, wouldn't we want to move these non-essential functions into child packages of the supplier package, where each child package implements some coherent or cohesive bundle of optional features? I suppose it's not cheating to not count the references from the child to the parent as a level of indirection according to the rule of Demeter -- this should be an improvement of the design, because the indirection has to be hierarchically organized. If you count with's, then 'with A.XYZ' scores better than 'with A.X, A.Y, A.Z'. But if A.X, A.Y, and A.Z define independent abstractions that don't need to refer to each other, isn't it likely that the program that uses three packages instead of one is (possibly much) better? Al