public static void ActionFindItemByType <T>(IAction a, List <T> results)
 {
     if (a != null)
     {
         List <ParameterValue> pvs = a.ParameterValues;
         if (pvs != null && pvs.Count > 0)
         {
             foreach (ParameterValue p in pvs)
             {
                 if (p.ValueType == EnumValueType.MathExpression)
                 {
                     MathNodeRoot mr = p.MathExpression as MathNodeRoot;
                     if (mr != null)
                     {
                         mr.FindItemByType <T>(results);
                     }
                 }
                 else if (p.ValueType == EnumValueType.Property)
                 {
                     object v = p.Property;
                     if (v is T)
                     {
                         results.Add((T)v);
                     }
                 }
             }
         }
     }
 }
 public override void FindItemByType <T>(List <T> results)
 {
     if (_logicExpression != null)
     {
         _logicExpression.FindItemByType <T>(results);
     }
     base.FindItemByType <T>(results);
 }
        public override void FindItemByType <T>(List <T> results)
        {
            MathNodeRoot r = RepeatCount.MathExpression as MathNodeRoot;

            if (r != null)
            {
                r.FindItemByType <T>(results);
            }
            base.FindItemByType <T>(results);
        }