public GraphQLContentOptions ConfigureContentType(string contentType, Action <GraphQLContentTypeOption> action)
        {
            var option = new GraphQLContentTypeOption(contentType);

            action(option);

            ContentTypeOptions = ContentTypeOptions.Union(new[] { option });

            return(this);
        }
        public bool IsCollapsedByDefault(ContentTypePartDefinition definition)
        {
            var contentType = definition.ContentTypeDefinition.Name;
            var partName    = definition.PartDefinition.Name;

            if (contentType == partName)
            {
                return(true);
            }

            var contentTypeOption = ContentTypeOptions.FirstOrDefault(ctp => ctp.ContentType == contentType);

            if (contentTypeOption != null)
            {
                if (contentTypeOption.Collapse)
                {
                    return(true);
                }

                var contentTypePartOption = contentTypeOption.PartOptions.FirstOrDefault(p => p.Name == partName);

                if (contentTypePartOption != null)
                {
                    if (contentTypePartOption.Collapse)
                    {
                        return(true);
                    }
                }
            }

            var contentPartOption = PartOptions.FirstOrDefault(p => p.Name == partName);

            if (contentPartOption != null)
            {
                if (contentPartOption.Collapse)
                {
                    return(true);
                }
            }

            return(false);
        }