/// <summary>
 /// Creates a duplicate of the full object model
 /// </summary>
 /// <returns>A clone of this model</returns>
 public object Clone()
 {
     return(new MachineModel
     {
         Channels = (Channels)Channels.Clone(),
         Electronics = (Electronics)Electronics.Clone(),
         Fans = Fans.Select(fan => (Fan)fan.Clone()).ToList(),
         Heat = (Heat)Heat.Clone(),
         Job = (Job)Job.Clone(),
         MessageBox = (MessageBox)MessageBox.Clone(),
         Move = (Move)Move.Clone(),
         Network = (Network)Network.Clone(),
         Messages = Messages.Select(item => (Message)item.Clone()).ToList(),
         Scanner = (Scanner)Scanner.Clone(),
         Sensors = (Sensors)Sensors.Clone(),
         Spindles = Spindles.Select(spindle => (Spindle)spindle.Clone()).ToList(),
         State = (State)State.Clone(),
         Storages = Storages.Select(storage => (Storage)storage.Clone()).ToList(),
         Tools = Tools.Select(tool => (Tool)tool.Clone()).ToList()
     });
 }