public void SetVisibility()
        {
            bool renderRenderer = !inspectorItemRenderer.hidden;

            if (inspectorItemRenderer.entityInfo.isField &&
                AttributeHelper.GetAttribute <HideInInspector>(inspectorItemRenderer.entityInfo.fieldInfo) != null)
            {
                renderRenderer = false;
            }
            else if (!string.IsNullOrEmpty(method))
            {
                MethodInfo methodInfo = caller.GetType().GetMethod(method, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
                if (methodInfo != null)
                {
                    if (methodInfo.ReturnType == typeof(bool))
                    {
                        renderRenderer = (bool)methodInfo.Invoke(caller, null);
                    }
                    else
                    {
                        Debug.LogError("The method specified in the attribute Visibility have to return a bool.");
                    }
                }
                else
                {
                    Debug.LogError("The method specified in the attribute Visibility does not exist.");
                }
            }
            else if (!string.IsNullOrEmpty(id) && value != null)
            {
                InspectorItemRenderer conditionalRenderer = InspectorItemRenderer.LookForRenderer(id, otherRenderers);
                if (conditionalRenderer != null && conditionalRenderer.entityInfo.isField)
                {
                    if (!value.Equals(conditionalRenderer.entityInfo.fieldInfo.GetValue(classFieldBelongTo)))
                    {
                        renderRenderer = false;
                    }
                    else
                    {
                        renderRenderer = true;
                    }
                }
                else
                {
                    Debug.LogWarning("The identifier " + id + " was not found in the list of renderers, or this renderer " +
                                     "was not initialized from a field. Ensure that the id parameter of the attribute Visibility refers to the id of a field " +
                                     "(name of the field if you did not specify explicitly the id of the field in [Inspector(id = \"...\").");
                }
            }

            if (renderRenderer)
            {
                inspectorItemRenderer.hidden = false;
            }
            else
            {
                inspectorItemRenderer.hidden = true;
            }
        }
 public InspectorItemRenderer LookForRenderer(string id)
 {
     return(InspectorItemRenderer.LookForRenderer(id, renderers.ToArray()));
 }