/// <summary>
 /// Takes a property and calls the appropriate parser method depending on its type
 /// </summary>
 void ParseProperty(TokenHolder holder, RuleInstance prop)
 {
     string propName = GetNameFromProperty(prop).ToLower(culture);
     // if we have some extra files, load these too
     if (propName == "loadfile")
         extraFiles.Add(ParseStringProperty(prop));
     // otherwise continue as normal
     else {
         switch (prop.Type) {
             case NodeType.Rule_StringProperty:
                 holder.StringTokens[propName] = ParseStringProperty(prop);
                 break;
             case NodeType.Rule_BoolProperty:
                 holder.BoolTokens[propName] = ParseBoolProperty(prop);
                 break;
             case NodeType.Rule_EnumProperty:
                 holder.EnumTokens[propName] = ParseEnumProperty(prop);
                 break;
             case NodeType.Rule_NumericProperty:
                 holder.FloatTokens[propName] = ParseFloatProperty(prop);
                 break;
             case NodeType.Rule_Vec3Property:
                 holder.VectorTokens[propName] = ParseVectorProperty(prop);
                 break;
             case NodeType.Rule_QuatProperty:
                 holder.QuatTokens[propName] = ParseQuatProperty(prop);
                 break;
         }
     }
 }
 /// <summary>
 /// Takes a property and calls the appropriate parser method depending on its type
 /// </summary>
 void ParseProperty(TokenHolder holder, RuleInstance prop)
 {
     string propName = GetNameFromProperty(prop).ToLower(culture);
     switch (prop.Type) {
         case NodeType.Rule_StringProperty:
             holder.StringTokens[propName] = ParseStringProperty(prop);
             break;
         case NodeType.Rule_BoolProperty:
             holder.BoolTokens[propName] = ParseBoolProperty(prop);
             break;
         case NodeType.Rule_EnumProperty:
             holder.EnumTokens[propName] = ParseEnumProperty(prop);
             break;
         case NodeType.Rule_NumericProperty:
             holder.FloatTokens[propName] = ParseFloatProperty(prop);
             break;
         case NodeType.Rule_Vec3Property:
             holder.VectorTokens[propName] = ParseVectorProperty(prop);
             break;
         case NodeType.Rule_QuatProperty:
             holder.QuatTokens[propName] = ParseQuatProperty(prop);
             break;
     }
 }