That is true, but not what I am trying to do. MyObject will be used by many different modules. It won't always be Main, or PersonManagement. I don't want a module named ParentModule. ParentModule is a reference back to the module who created the MyObject.
Here is the real example of what I would like to do (just want to know if I have to do it some other way). This is how it was done in VisualBasic.Net - which I know has more power.
The app controls a device with 4 different targets to control. Let's call them "zones". Zone 1, 2, 3, and 4 are independent of each other, but contained on the same device. The UI can control only one zone at a time, but the user can select which zone he is controlling. We call that the CurrentZone, or FocusedZone. It is an Int from 1 to 4.
Main starts and queries an IP address to obtain information about the target device. Once it knows which device it is talking to, it loads the appropriate UI module. This can be UI_For_Device_X, UI_For_Device_Y, UI_For_Device_Z. UI has a Public CurrentZone As Int defaulted to 1. There will only be one of those UI_xxxxx modules loaded.
The UI module creates an object for the Device it is controlling. Why the UI and not Main you would ask since Main is always present? The UI module contains the logic specific to each device to retrieve different information via different queries. I saw a serious code management mess if Main contained all of the logic for each specific device when the real difference came from the UI rendering side. Main's job is to find the device and load the correct UI module.
Device is an object created by UI_For_Device_X. Device is told its parent module is UI_For_Device_X. The Device object has a List of ZoneObjects from 0 to 4 representing the Zones the UI can control. Zone 0 is not used by the user, so it is not important for this - also it makes the List indexes match the visible zone #. ZoneObjects know how to do specific commands for their zone.
So here is the meat of the question... UI_For_Device_X has CurrentZone=2 and User presses button "Pause".
What I "want" to do from UI_For_Device_X is Device.Pause. Device will look at its ParentModule, get the CurrentZone, and send it to its ZonePlayers.Get(2) and then call Pause inside of the specific ZonePlayer.
I guess what I need to do is UI_For_Device_X should get his own reference to Device.ZonePlayers.Get(2) and then call Pause there.