public DependencyListView(List <SerializedProperty> itemsSource, int itemHeight, SerializedObject serializedObject)
        {
            SetupQueryEngine();

            m_SerializedObject = serializedObject;
            m_OriginalItems    = itemsSource;
            m_FilteredItems    = new List <SerializedProperty>();
            m_ItemSize         = itemHeight;

            var listViewContainer = new VisualElement();

            listViewContainer.AddToClassList(k_ListView);
            listViewContainer.style.flexGrow = 1;

            listView      = new ListView(m_FilteredItems, itemHeight, MakeItem, BindItem);
            listView.name = k_ListInternalView;
            listView.showAlternatingRowBackgrounds = AlternatingRowBackground.ContentOnly;
            listView.style.flexGrow = 1;
            listView.RegisterCallback <KeyUpEvent>(OnKeyUpEvent);
            listView.selectionType   = SelectionType.Multiple;
            listView.itemsChosen    += OnDoubleClick;
            listView.style.maxHeight = Mathf.Max(m_OriginalItems.Count * m_ItemSize + 100, listView.style.maxHeight.value.value);

            var searchField = new ToolbarSearchField();

            searchField.name = "dependency-listview-toolbar-searchfield";
            searchField.RegisterValueChangedCallback(evt =>
            {
                m_CurrentSearchString = evt.newValue;
                FilterItems(evt.newValue);
            });
            var textField = searchField.Q <TextField>();

            if (textField != null)
            {
                textField.maxLength = 1024;
                m_SearchFieldReady  = true;
            }

            searchField.AddToClassList(k_SearchFieldItem);
            Add(searchField);

            header = MakeHeader();
            UpdateHeader();
            listViewContainer.Add(header);

            listViewContainer.Add(listView);
            Add(listViewContainer);

            FilterItems(searchField.value);
        }