protected virtual void DrawInspector(Rect rect, out Rect inspectorRect, int elementIndex, SerializedProperty element)
    {
        PatternComponent currentComponent = Target.Components[elementIndex];
        Type             type             = currentComponent.GetType();

        PropertyDrawer drawer         = GetDrawer(type);
        float          requiredHeight = drawer.GetPropertyHeight(element, GUIContent.none);

        inspectorRect = new Rect(rect.x, rect.y + rect.height, rect.width, requiredHeight);

        drawer.OnGUI(inspectorRect, element, GUIContent.none);
    }