/// <summary>
        /// This will represent the passing of an arbitrary slice of time. The "real time" duration of it is not important, its duration could be decreased or
        /// increased to make the simulation proceed more quickly or more slowly.
        /// </summary>
        public StateTransition RegisterPassageOfTime()
        {
            if (_isAllowedToLetTrafficThrough())
            {
                return(StateTransition.Replace(new RedAndYellowLight()));
            }

            return(StateTransition.NoChange());
        }
 public StateTransition RegisterCarQueueing()
 {
     // We can't do anything here, we're already waiting
     return(StateTransition.NoChange());
 }
 /// <summary>
 /// This will represent the passing of an arbitrary slice of time. The "real time" duration of it is not important, its duration could be decreased or
 /// increased to make the simulation proceed more quickly or more slowly.
 /// </summary>
 public StateTransition RegisterPassageOfTime()
 {
     // If all that's happening is that time is ticking along then there is nothing to action here
     return(StateTransition.NoChange());
 }