private void DrawSceneOrPrefabListItem(SceneOrPrefab item)
        {
            var labelContent = new GUIContent();

            EditorGUILayout.BeginVertical("Box");
            EditorGUILayout.BeginHorizontal(SharedStyles.BuiltIn.listItemHeader);
            labelContent.text = item.name;
            EditorGUILayout.LabelField(labelContent);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginVertical("Box");
            labelContent.text = "Direct References";
            EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText);
            item.directExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.directExpanded, GUIContent.none, true);
            if (item.directExpanded)
            {
                foreach (var aiRef in item.directReferences)
                {
                    labelContent.text = aiRef.name;
                    EditorGUILayout.LabelField(labelContent);
                }
            }

            EditorGUILayout.EndVertical();

            if (item.indirectReferences.Count > 0)
            {
                EditorGUILayout.BeginVertical("Box");
                labelContent.text = "Indirect References";
                EditorGUILayout.LabelField(labelContent, SharedStyles.BuiltIn.centeredWrappedText);
                item.indirectExpanded = EditorGUI.Foldout(GUILayoutUtility.GetLastRect(), item.indirectExpanded, GUIContent.none, true);
                if (item.indirectExpanded)
                {
                    foreach (var aiRef in item.indirectReferences)
                    {
                        labelContent.text = aiRef.name;
                        EditorGUILayout.LabelField(labelContent);
                    }
                }

                EditorGUILayout.EndVertical();
            }

            EditorGUILayout.EndVertical();
        }
        private void CreateSceneOrPrefab(string name, IEnumerable <string> refedIds, bool isPrefab)
        {
            var s = new SceneOrPrefab(name, isPrefab);

            AIReference aiRef;

            foreach (var aiId in refedIds)
            {
                if (_aiReferences.TryGetValue(aiId, out aiRef))
                {
                    s.directReferences.Add(aiRef);
                }
                else
                {
                    s.directReferences.Add(AIReference.missing);
                }
            }

            if (s.directReferences.Count > 0)
            {
                s.directReferences.Sort((a, b) => a.name.CompareTo(b.name));
                _referencers.Add(s);
            }
        }