public void Apply()
        {
            try {
                //var refs = (IList) m_json[ "references" ];
                if (m_json.ContainsKey("references"))
                {
                    var s = m_reference.Where(x => x.toggle).Select(x => x.asmname).ToArray();
                    m_json["references"] = s;
                }

                if (m_json.ContainsKey("references.backup"))
                {
                    var s = m_reference.Where(x => !x.toggle).Select(x => x.asmname).ToArray();
                    m_json["references.backup"] = s;
                }
                else
                {
                    var s = m_reference.Where(x => !x.toggle).Select(x => x.asmname).ToArray();
                    m_json.Add("references.backup", s);
                }

                fs.WriteAllText(assetPath, EditorJson.Serialize(m_json, true), new UTF8Encoding(false));
                AssetDatabase.ImportAsset(assetPath);
            }
            catch (Exception e) {
                Debug.LogException(e);
            }
        }
        public static PackageJson Load(string filepath)
        {
            var data = EditorJson.Deserialize(filepath.ReadAllText()) as Dictionary <string, object>;

            return(new PackageJson {
                m_data = data,
            });
        }
        void OnEnable()
        {
            SetTitle($"{assetPath.FileNameWithoutExtension()}");
            if (arg != null)
            {
                assetPath = arg;
                arg       = null;
            }
            var asmdef = assetPath.LoadAsset <AssemblyDefinitionAsset>();

            m_json = (Dictionary <string, object>)EditorJson.Deserialize(asmdef.text);

            var dic = (IList)m_json["references"];

            m_reference = new List <Ref>(128);
            foreach (var e in dic)
            {
                var val = new Ref {
                    asmname = (string)e,
                    toggle  = true,
                };
                m_reference.Add(val);
            }

            if (m_json.ContainsKey("references.backup"))
            {
                dic = (IList)m_json["references.backup"];
                foreach (var e in dic)
                {
                    var val = new Ref {
                        asmname = (string)e,
                        toggle  = false,
                    };
                    m_reference.Add(val);
                }
            }
        }