Is there a sensible way to achieve something like this:

An instance of class M instantiates one of class S-1 and one of class S-2, and...
I want S-1 to be able to call methods of M,
S-2 to be able to call methods of S-1,
and M to be able to call methods of both S-1 and S-2.

These classes are otherwise unrelated -- no inheritance.

Alternatively, I could combine S-1 into M (just replace the S-1 methods and data with M methods and data) but then I would need S-2 (which is declared by M) to be able to call M methods (and M to be able to call S-2 methods).