private static void WriteWhitelist()
        {
            if (whitelist.Count > 0)
            {
                var fileExisted = File.Exists(whitelistPath);
                ACTkEditorGlobalStuff.RemoveReadOnlyAttribute(whitelistPath);
                var fs = new FileStream(whitelistPath, FileMode.Create, FileAccess.Write, FileShare.Read);
                var br = new BinaryWriter(fs);

                br.Write(whitelist.Count);

                foreach (var assembly in whitelist)
                {
                    var assemblyName = assembly.name;
                    var hashes       = "";

                    for (var j = 0; j < assembly.hashes.Length; j++)
                    {
                        hashes += assembly.hashes[j];
                        if (j < assembly.hashes.Length - 1)
                        {
                            hashes += ACTkEditorGlobalStuff.InjectionDataSeparator;
                        }
                    }

                    var line = ObscuredString.EncryptDecrypt(assemblyName + ACTkEditorGlobalStuff.InjectionDataSeparator + hashes, "Elina");
                    br.Write(line);
                }
                br.Close();
                fs.Close();

                if (!fileExisted)
                {
                    AssetDatabase.Refresh();
                }
            }
            else
            {
                ACTkEditorGlobalStuff.RemoveReadOnlyAttribute(whitelistPath);

                FileUtil.DeleteFileOrDirectory(whitelistPath);
                FileUtil.DeleteFileOrDirectory(whitelistPath + ".meta");

                AssetDatabase.Refresh();
            }

            ACTkPostprocessor.InjectionAssembliesScan();
        }