public override void OnInspectorGUI()
    {
        serializedObject.Update();
        //EditorGUI.indentLevel++;

        GUILayout.BeginVertical(GUI.skin.box);

        EditorGUILayout.PropertyField(interactPositionProperty);
        GUILayout.Space(3.0f);

        for (int i = 0; i < conditionReactionCollectionEditor.Count; i++)
        {
            conditionReactionCollectionEditor[i].OnInspectorGUI();
        }

        GUILayout.BeginHorizontal();

        // If user press the button, add a new ConditionReationCollection and an Editor binding with it
        if (GUILayout.Button("Add new Conditions->Reactions", GUILayout.Width(240.0f)))
        {
            conditionReactionCollectionArrayProperty.AddElementToProperty
                (ConditionReationCollectionEditor.CreateConditionReactionCollection());

            conditionReactionCollectionEditor.Add(
                CreateEditor(interactable.conditionReactionCollectionArray[interactable.conditionReactionCollectionArray.Count - 1])
                as ConditionReationCollectionEditor);
        }

        // If user press the button, remove the last item form the list, and destory the binding editor
        if (GUILayout.Button("Remove Conditions->Reactions", GUILayout.Width(240.0f)))
        {
            int index = interactable.conditionReactionCollectionArray.Count - 1;
            Debug.Log(index);
            conditionReactionCollectionArrayProperty.RemoveElementFromPropertyByIndex(index);
            DestroyImmediate(conditionReactionCollectionEditor[index]);
            conditionReactionCollectionEditor.RemoveAt(index);
        }
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();

        //EditorGUI.indentLevel--;
        serializedObject.ApplyModifiedProperties();
    }