class TrafficLightNew
{
 status {
   
   northAndSouthLeftArrow { 
      entry / { trafficLightManager.northArrow(); }
      entry / { trafficLightManager.southArrow(); } 
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerGreen() [trafficType=='low'] -> northAndSouthGreen;
   }
    northAndSouthYellow {
      entry / { trafficLightManager.northYellow(); }
      entry / { trafficLightManager.southYellow(); }
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerYellow() [trafficType=='low' || trafficType=="none"] -> northAndSouthRed;
    }
   
   northAndSouthRed {
      entry / { trafficLightManager.northRed(); }
      entry / { trafficLightManager.southRed(); }
      entry / { trafficLightManager.westGreen(); }
      entry / { trafficLightManager.eastGreen(); } 
      timerGreen() -> westAndEastYellow;
    }
   
   westAndEastYellow{
      entry / { trafficLightManager.northRed(); }
      entry / { trafficLightManager.southRed(); }
      entry / { trafficLightManager.westYellow(); }
      entry / { trafficLightManager.eastYellow(); } 
      timerYellow() [trafficType=='moderate' || trafficType=="high"] -> northGreenWithArrow;
      timerYellow() [trafficType=='low'] -> northAndSouthLeftArrow;
      timerYellow() [trafficType=='none'] -> northAndSouthGreen;
    }
   
    northAndSouthGreen { 
      entry / { trafficLightManager.northGreen(); }
      entry / { trafficLightManager.southGreen(); } 
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerGreen() [trafficType=='none' || trafficType=='low']-> northAndSouthYellow;
    }
   northGreenWithArrow { 
      entry / { trafficLightManager.northGreenAndArrow(); }
      entry / { trafficLightManager.southRed(); } 
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerGreen() [trafficType=='moderate' || trafficType=="high"] -> northYellowRestRed;
   }
   northYellowRestRed{
      entry / { trafficLightManager.northYellow(); }
      entry / { trafficLightManager.southRed(); }
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerYellow() [trafficType=='moderate' || trafficType=="high"] -> northRedSouthGreenWithArrow;
   }
   northRedSouthGreenWithArrow { 
      entry / { trafficLightManager.northRed(); }
      entry / { trafficLightManager.southGreenAndArrow(); } 
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerGreen() [trafficType=='moderate' || trafficType=="high"] -> southYellowRestRed;
   }
   southYellowRestRed{
      entry / { trafficLightManager.northRed(); }
      entry / { trafficLightManager.southYellow(); }
      entry / { trafficLightManager.westRed(); }
      entry / { trafficLightManager.eastRed(); } 
      timerYellow() [trafficType=='moderate'] -> northAndSouthRed;
      timerYellow() [trafficType=='high'] -> westGreenWithArrow;
   }
   
   westGreenWithArrow{
      entry / { trafficLightManager.northRed(); }
      entry / { trafficLightManager.southRed(); }
      entry / { trafficLightManager.westGreenAndArrow(); }
      entry / { trafficLightManager.eastRed(); } 
      timerGreen() [trafficType=='high'] -> northAndSouthRed;
   }
    
  }
}//$?[End_of_model]$?

namespace -;

class TrafficLightNew
{
  position 50 30 109 45;
}

https://cruise.umple.org/umpleonline/umple.php?model=210203xah436nn7rd5