<#import "import/classMemberTemplates" as classMembers/>
//CHECKSTYLE:OFF
package ${currentPackage};

import static ${operationsPackage}.GraphQlAppender.*;

import ${schemaTypesPackage}.*;

<#list importPackages as i>
import ${i}.*;
</#list>

${generatedAnnotation!}
@SuppressWarnings({"all", "PMD"})
public class ${className}
{
	private final StringBuilder documentBuilder;
	public ${className}(StringBuilder documentBuilder) {
		this.documentBuilder = documentBuilder;
	}
	<#list selections as typeName, fields>
		<#if typeName?has_content>
			<#lt/>	public ${className} on${typeName}(java.util.function.Consumer<${typeName}Selector> selector) {
			<#lt/>		documentBuilder.append(" ...on ${typeName} {");
			<#lt/>		selector.accept(new ${typeName}Selector());
			<#lt/>		documentBuilder.append(" }");
			<#lt/>		return this;
			<#lt/>	}
			<#lt/>	public class ${typeName}Selector {
			<@classMembers.addSelectionFields className=typeName+'Selector' fields=fields indent='\t\t'/>
			<#lt/>	}
		<#else>
			<@classMembers.addSelectionFields className=className fields=fields indent='\t'/>
		</#if>
	</#list>
}
//CHECKSTYLE:ON
