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

<@classMembers.addRootClassAnnotations/>
public class ${className} implements ${operationsPackage}.${operation?cap_first}
{
	private final String document;

	public ${className}(java.util.function.Consumer<${currentPackage}.selectors.${typeName}Selector> selector) {
		StringBuilder documentBuilder = new StringBuilder("${operation} {");
		selector.accept(new ${currentPackage}.selectors.${typeName}Selector(documentBuilder));
		this.document = documentBuilder.append(" }").toString();
	}

	@Override
	public String getOperationName() {
		return null;
	}

	@Override
	public String getDocument() {
		return document;
	}

	@Override
	public java.util.Map<String, Object> getVariables() {
		return java.util.Collections.emptyMap();
	}

	@Override
	public Class<${currentPackage}.results.${typeName}> getResultClass() {
		return ${currentPackage}.results.${typeName}.class;
	}

	<@classMembers.addToString fields=[{'name':'document'}] indent='\t'/>
}
//CHECKSTYLE:ON
