> |------------------------- > |def diff(aModule) > | aModule.private_instance_methods- aModule.private_methods > |end > > You are subtracting set of aModule's private methods from set of > private instance methods of an instance of a class which includes > aModule. The result would be nonsense. Get it? > > matz. > Ah, I just wanted a convenient way to figure out the #private_methods of an object of type Module ended asking for the #private_methods for the object Module of type Class? I guess what you are saying: Kernel instance_of Module || Object | Module This would turn any private_method for an Object of type Module - for example Kernel - into a private_instance_method of Kernel and then by inclusion (and inheritance) into a private_instance_method of type Module? Hm, doesn't this also work the other way around? (by design I suppose?) class Module private def ops end end module Test end p Module.private_instance_methods.include? ("ops") # true p Test.private_methods.include?("ops") # true # This also true for the buildin method append_features in diff(Module) A = Module.new X = Module.new Y = Module.new module X append_features(A) # include X into A - okay because end # append_features private_methods of Object A p A.ancestors # [A,X] module ancestors class Module def outer(aMod) # makes the private_instance_method visible append_features(aMod) end end Y.outer(A) p A.ancestors #[A,Y,X] Thank you very much for clearing up my confusion. Christoph