private IEnumerable<TrackStretchCommand> GetArrivalCommands(TrackStretchCommand command) {
     var result = new List<TrackStretchCommand>();
     result.AddRange(command.Call.Station.Calls.Where(c => ! c.IsArrived).Select(c => new RequestTrackStretchCommand(c, command.Stretch)));
     // TODO: 
     return result;
 }
 internal CancelTrackStretchCommand(TrackStretchCommand other) : base(other) { }
 internal protected TrackStretchCommand(TrackStretchCommand other) {
     if (other == null) throw new ArgumentNullException(nameof(other));
     Stretch = other.Stretch;
     Call = other.Call;
 }