public SharedMessage(AbstractMachine from)
     : base(from)
 {
 }
 public StopMessage(AbstractMachine from)
     : base(from)
 {
 }
 public EstimateRefinedMessage(AbstractMachine from)
     : base(from)
 {
 }
 public RemapPartitionMessage(AbstractMachine from, IEnumerable<KeyValuePair<int, int>> map)
     : base(from)
 {
     this.map = map.ToArray();
 }
 public RefineMessage(AbstractMachine from)
     : base(from)
 {
 }
 public CountMessage(AbstractMachine from)
     : base(from)
 {
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="from"></param>
 /// <param name="workers"></param>
 public CoordinatorMessage(AbstractMachine from, IEnumerable<AbstractMachine> workers)
     : base(from)
 {
     this.workers = workers.ToArray();
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="sender"></param>
 public AbstractMessage(AbstractMachine sender)
 {
     this.sender = sender;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="from"></param>
 /// <param name="count"></param>
 public CountedMessage(AbstractMachine from, IEnumerable<int> blocks)
     : base(from)
 {
     this.blocks = blocks.ToArray();
 }
 public ClearMessage(AbstractMachine from)
     : base(from)
 {
 }