println("  public " + fieldClass + " get" + fieldName + "() {");
println("  public " + fieldClass + " " + fieldGetter + " {");
	private void genSeparatorGetterAndSetter(Field field) {		String fieldName = StringConversions.makeCapitalizedIdentifier(field.getId());		String fieldClass = TypeGenerator.qualifiedClassName(getJavaGenerationParameters(), field.getType());		String fieldId = JavaGenerator.getFieldId(field.getId());		if (getConverter().isReserved(field.getType())) {			// TODO: find a way to reuse generation of getters in			// AlternativeGenerator			throw new UnsupportedOperationException("separators with builtin types not yet supported");		}		println("  public " + fieldClass + " get" + fieldName + "() {");		println("    if (!isEmpty() && !isSingle()) {");		println("      return " + fieldId + ";");		println("    }");		println(			"    throw new UnsupportedOperationException(\"This "				+ getClassName()				+ " does not have a "				+ field.getId()				+ ":\" + this);");		println("  }");		println();		println("  public " + getClassName() + " set" + fieldName + "(" + fieldClass + " arg) {");		println("    if (!isEmpty() && !isSingle()) {");		String arglist = buildActualSeparatorArguments(listType);		arglist = arglist.replaceAll(fieldId, "arg");		println(			"      return " + factoryGetter() + ".make" + getClassName() + "(getHead(), " + arglist + "getTail());");		println("    }");		println("    throw new RuntimeException(\"This " + getClassName() + " does not have a " + fieldId + ".\");");		println("  }");		println();	}