private void Sanitize()
        {
            this.isDirty  = false;
            this.warnings = new List <string>();
            this.infos    = new List <string>();

            this.definition = this.definition ?? (this.definition = new ServiceDefinition(this.root));

            this.VerifyFieldNames();

            {
                foreach (var apiGroup in this.root.ApiGroups)
                {
                    // generate implicit return types
                    foreach (var returnType in apiGroup.ReturnTypes.ToArray())
                    {
                        foreach (var item in returnType.Fields.ToArray())
                        {
                            var parts    = item.Name.Split(new char[] { ':', '/', }, 2);
                            var mainPart = parts.Length == 1 ? parts[0] : parts[0];
                            var subPart  = parts.Length == 2 ? parts[1] : null;

                            if (parts.Length > 1)
                            {
                                var subReturnType = definition.FindReturnType(mainPart, apiGroup.Name, subPart: subPart, typeName: item.Type);
                            }
                        }
                    }
                }
            }

            this.VerifyFieldNames();
        }
        private void Sanitize()
        {
            this.isDirty = false;
            this.warnings = new List<string>();
            this.infos = new List<string>();

            this.definition = this.definition ?? (this.definition = new ServiceDefinition(this.root));

            this.VerifyFieldNames();

            {
                foreach (var apiGroup in this.root.ApiGroups)
                {
                    // generate implicit return types
                    foreach (var returnType in apiGroup.ReturnTypes.ToArray())
                    {
                        foreach (var item in returnType.Fields.ToArray())
                        {
                            var parts = item.Name.Split(new char[] { ':', '/', }, 2);
                            var mainPart = parts.Length == 1 ? parts[0] : parts[0];
                            var subPart = parts.Length == 2 ? parts[1] : null;

                            if (parts.Length > 1)
                            {
                                var subReturnType = definition.FindReturnType(mainPart, apiGroup.Name, subPart: subPart, typeName: item.Type);
                            }
                        }
                    }
                }
            }

            this.VerifyFieldNames();
        }