public GraphCallerField(SerializedProperty property)
        {
            _rootProperty    = property;
            _graphProperty   = property.FindPropertyRelative(nameof(GraphCaller.Graph));
            _inputsProperty  = property.FindPropertyRelative(nameof(GraphCaller.Inputs));
            _outputsProperty = property.FindPropertyRelative(nameof(GraphCaller.Outputs));
            _graphCaller     = property.GetObject <GraphCaller>();

            var graphField = new ObjectPickerField(typeof(Graph)).ConfigureProperty(_graphProperty);

            graphField.SetFieldLabel(property.displayName);
            graphField.RegisterCallback <ChangeEvent <Object> >(evt => UpdateVariables(evt.newValue as Graph));

            _inputsList = new ListField
            {
                bindingPath  = _inputsProperty.propertyPath,
                AllowAdd     = false,
                AllowRemove  = false,
                AllowReorder = false,
                Tooltip      = "The input values to set for the Graph"
            };

            _outputsList = new ListField
            {
                bindingPath  = _outputsProperty.propertyPath,
                AllowAdd     = false,
                AllowRemove  = false,
                AllowReorder = false,
                Tooltip      = "The output values to resolve from this Graph"
            };

            Add(graphField);
            Add(_inputsList);
            Add(_outputsList);

            _outputsList.AddToClassList(OutputsUssClassName);
            _inputsList.AddToClassList(InputsUssClassName);

            AddToClassList(UssClassName);
            this.AddStyleSheet(Stylesheet);

            UpdateVariables(_graphProperty.objectReferenceValue as Graph);
        }