/// <summary>
 /// Property oriented instruction
 /// Set Property to value
 /// </summary>
 /// <param name="property">Property name</param>
 /// <param name="value">new value</param>
 /// <returns>Instruction</returns>
 public static Instruction PropSet(PropertyTag property, int value)
 {
     return((sim, cycle) =>
     {
         if (sim.Behavior.Properties.IsPropertyIn(property))
         {
             sim.Behavior.Properties.ChangeValue(property, value);
         }
         else
         {
             sim.Behavior.Properties.AddProperty(property, value);
         }
     });
 }
 public bool IsPropertyIn(PropertyTag name)
 {
     return(Props.ContainsKey(name));
 }
 public void IncrementValue(PropertyTag name, int increment)
 {
     ChangeValue(name, GetPropertyValue(name) + increment);
 }