/// <summary>
    /// Ensures we have a static ReorderableList for each obj + list.
    /// </summary>
    /// <returns>The state.</returns>
    /// <param name="prop">Property.</param>
    private ReorderableListDrawer.State GetState(SerializedProperty property)
    {
        if (!property.isArray)
        {
            var parentProp = GetParentArray(property);

            serializedList   = parentProp;
            serializedObject = property.serializedObject;
            target           = serializedObject.targetObject;
            listName         = parentProp.name;
        }

        var key = target.name + serializedList.propertyPath;

        ReorderableListDrawer.State state = null;

        s_States.TryGetValue(key, out state);

        if (state == null)
        {
            state = new ReorderableListDrawer.State();

            state.reorderableList = CreateList(serializedObject, serializedList);
            s_States[key]         = state;
        }

        return(state);
    }
 private void RestoreState(SerializedProperty property)
 {
     m_State = this.GetState(property);
     m_State.reorderableList.serializedProperty = serializedList;
 }