protected override void Do(object o)
        {
            switch (o)
            {
            case BasicInstruction.Initialize i: InitializeAgent(behaviour: i.GetObjectFromMessage); break;

            case BasicInstruction.ChildRef c: AddChild(childRef: c.GetObjectFromMessage); break;

            default:
                if (!Behaviour.Action(message: (ISimulationMessage)o))
                {
                    throw new Exception(message: this.Name + " is sorry, he doesn't know what to do!");
                }
                break;
            }
        }