public override void OnPreTargetMembersGUI()
        {
            var skin           = InspectorEditor.Skin;
            var directory      = AssetDatabase.GUIDToAssetPath(RestoredAGXFile.DataDirectoryId);
            var directoryValid = directory.Length > 0 && AssetDatabase.IsValidFolder(directory);

            using (new GUILayout.HorizontalScope()) {
                EditorGUILayout.PrefixLabel(GUI.MakeLabel("Data directory"),
                                            skin.Label);

                var statusColor = directoryValid ?
                                  Color.Lerp(InspectorGUI.BackgroundColor, Color.green, EditorGUIUtility.isProSkin ? 0.8f : 0.2f) :
                                  Color.Lerp(Color.white, Color.red, EditorGUIUtility.isProSkin ? 0.8f : 0.2f);
                var prevColor = UnityEngine.GUI.backgroundColor;

                UnityEngine.GUI.backgroundColor = statusColor;
                EditorGUILayout.SelectableLabel(directory,
                                                skin.TextField,
                                                GUILayout.Height(EditorGUIUtility.singleLineHeight));
                UnityEngine.GUI.backgroundColor = prevColor;
                if (GUILayout.Button(GUI.MakeLabel("...", false, "Open file panel"),
                                     skin.Button,
                                     GUILayout.Width(28)))
                {
                    var newDirectory = EditorUtility.OpenFolderPanel("Prefab data directory", "Assets", "");
                    if (newDirectory.Length > 0)
                    {
                        var relPath = IO.Utils.MakeRelative(newDirectory, Application.dataPath).Replace('\\', '/');
                        if (AssetDatabase.IsValidFolder(relPath))
                        {
                            RestoredAGXFile.DataDirectoryId = AssetDatabase.AssetPathToGUID(relPath);
                            EditorUtility.SetDirty(RestoredAGXFile);
                        }
                    }
                }
            }

            AssemblyTool.OnObjectListsGUI(this);
        }
        public override void OnPreTargetMembersGUI(GUISkin skin)
        {
            var directory      = AssetDatabase.GUIDToAssetPath(RestoredAGXFile.DataDirectoryId);
            var directoryValid = directory.Length > 0 && AssetDatabase.IsValidFolder(directory);

            using (new GUILayout.HorizontalScope()) {
                GUILayout.Label(GUI.MakeLabel("Data directory"), skin.label, GUILayout.Width(160));

                var statusColor = directoryValid ?
                                  Color.Lerp(Color.white, Color.green, 0.2f) :
                                  Color.Lerp(Color.white, Color.red, 0.2f);
                var prevColor = UnityEngine.GUI.backgroundColor;

                UnityEngine.GUI.backgroundColor = statusColor;
                GUILayout.TextField(directory, skin.textField);
                UnityEngine.GUI.backgroundColor = prevColor;
                if (GUILayout.Button(GUI.MakeLabel("...", false, "Open file panel"),
                                     skin.button,
                                     GUILayout.Width(28)))
                {
                    var newDirectory = EditorUtility.OpenFolderPanel("Prefab data directory", "Assets", "");
                    if (newDirectory.Length > 0)
                    {
                        var relPath = IO.Utils.MakeRelative(newDirectory, Application.dataPath).Replace('\\', '/');
                        if (AssetDatabase.IsValidFolder(relPath))
                        {
                            RestoredAGXFile.DataDirectoryId = AssetDatabase.AssetPathToGUID(relPath);
                            EditorUtility.SetDirty(RestoredAGXFile);
                        }
                    }
                }
            }

            GUI.Separator();

            AssemblyTool.OnObjectListsGUI(RestoredAGXFile, skin);
        }