// helpers
        protected TypeDefinitionField TransformTypeField(ITypeNode type, TypeDefinitionField context, bool nullable = false)
        {
            var ctx = context ?? new TypeDefinitionField();

            if (type.IsNonNullType())
            {
                ctx.NotNullable = true;
                return(TransformTypeField(type.InnerType(), ctx));
            }

            if (type.IsListType())
            {
                ctx.IsList    = true;
                ctx.InnerType = TransformTypeField(type.InnerType(), null);
                return(ctx);
            }

            ctx.Type = type.ToString();
            return(ctx);
        }
 protected void RenderTypeField(StringBuilder sb, TypeDefinitionField field)
 {
     sb.AppendLine($"{this.Indent}public {this.RenderFieldType(field)} {CodeBuilder.Capitalize(field.Name)} {InterfaceSuffix}");
 }
 protected void RenderEnumField(StringBuilder sb, TypeDefinitionField field)
 {
     sb.AppendLine($"{this.Indent}{CodeBuilder.Capitalize(field.Name)}{this.EnumSuffix}");
 }
 protected string RenderFieldType(TypeDefinitionField field)
 {
     return(field.IsList ? $"List<{this.RenderFieldType(field.InnerType)}>" : CodeBuilder.ScalarMap.FirstOrDefault(e => e.Key == field.Type).Value ?? field.Type);
 }