private void CreateNewMessageFilesBasedOnTemplate()
        {
            if (!_isClient && !_isServer)
            {
                throw new Exception("The interpreter requires one or both of the check boxes for Client/Server to be enabled");
            }

            var checker = new MessageContractChecker();
            int nextId  = checker.HighestCodeFound + 1;

            string messageTemplatePath     = "Templates/MessageTemplate";
            string interpreterTemplatePath = "Templates/MessageInterpreterTemplate";

            if (_useSingletonInterpreter)
            {
                messageTemplatePath     += "Singleton";
                interpreterTemplatePath += "Singleton";
            }

            var messageTemplate     = Resources.Load <TextAsset>(messageTemplatePath);
            var interpreterTemplate = Resources.Load <TextAsset>(interpreterTemplatePath);

            string messageCode     = string.Format(messageTemplate.text, nextId, _messageName);
            string interpreterCode = string.Format(interpreterTemplate.text,
                                                   _messageName, _isClient.ToString().ToLower(),
                                                   _isServer.ToString().ToLower());

            string path = Selection.activeObject != null
                                ? AssetDatabase.GetAssetPath(Selection.activeObject.GetInstanceID())
                                : "Assets";

            string interpreterPath = path;

            if (Directory.Exists($"{interpreterPath}/Interpreters"))
            {
                interpreterPath += "/Interpreters";
            }

            File.WriteAllText($"{path}/{_messageName}Message.cs", messageCode);
            File.WriteAllText($"{interpreterPath}/{_messageName}Interpreter.cs", interpreterCode);
            AssetDatabase.Refresh();
        }
 public MessageCheckingWindow()
 {
     _checker = new MessageContractChecker();
     _errors  = _checker.GetAllErrors();
 }