public HandlerInfo(string path, SPPropertyAttributePropertyHandler handler)
 {
     this.propPath = path;
     this.handler = handler;
 }
 private static void AddAsHandled(SerializedProperty property, SPPropertyAttributePropertyHandler handler)
 {
     if (property.serializedObject.targetObject != null)
     {
         _usedHandlers.Add(property.serializedObject.targetObject.GetInstanceID(), new HandlerInfo(property.propertyPath, handler));
     }
 }
        //#######################
        // GetHandler
        public static IPropertyHandler GetHandler(SerializedProperty property)
        {
            if (property == null) throw new System.ArgumentNullException("property");

            IPropertyHandler result = _handlerCache.GetHandler(property);
            if (result != null)
            {
                return result;
            }

            //TEST FOR SPECIAL CASE HANDLER
            var fieldInfo = ScriptAttributeUtility.GetFieldInfoFromProperty(property);
            if (fieldInfo != null && System.Attribute.IsDefined(fieldInfo, typeof(SPPropertyAttribute)))
            {
                var attribs = fieldInfo.GetCustomAttributes(typeof(SPPropertyAttribute), false).Cast<SPPropertyAttribute>().ToArray();
                //if (attribs[0].HandlesEntireArray)
                //{
                //    result = new SPPropertyAttributePropertyHandler(fieldInfo, attribs);
                //    _handlerCache.SetHandler(property, result);
                //    return result;
                //}
                result = new SPPropertyAttributePropertyHandler(fieldInfo, attribs);
                _handlerCache.SetHandler(property, result);
                return result;
            }

            //USE STANDARD HANDLER if none was found
            return StandardPropertyHandler.Instance;
        }