String alt_id = StringConversions.makeIdentifier(alt.getId()); String type_name = buildTypeName(type);
	private void genSortVisitorAltImpl(Type type, Alternative alt) {		String type_id = StringConversions.makeIdentifier(type.getId());		String alt_id = StringConversions.makeIdentifier(alt.getId());		String type_name = buildTypeName(type);		String cons_name = buildConstructorName(type, alt);		println("  if (" + buildIsAltName(type, alt) + "(arg)) {");		print("    return " + cons_name + "(");		Iterator fields = type.altFieldIterator(alt.getId());		while (fields.hasNext()) {			Field field = (Field) fields.next();			println("");			print("        ");			String getter_name = buildGetterName(type, field);			if (field.getType().equals(type.getId())) {				String visitor_name = prefix + "visit" + type_id;				print(visitor_name + "(" + getter_name + "(arg)");				Iterator params = type.fieldIterator();				while (params.hasNext()) {					Field param = (Field) params.next();					if (!param.getType().equals(type.getId())) {						print(", ");						print("accept" + StringConversions.makeCapitalizedIdentifier(param.getId()));					}				}				print(")");			}			else {				String acceptor_name = "accept" + StringConversions.makeCapitalizedIdentifier(field.getId());				print(					acceptor_name + " ? " + acceptor_name + "(" + getter_name + "(arg))");				print(" : " + getter_name + "(arg)");			}			if (fields.hasNext()) {				print(",");			}		}		println(");");		println("  }");	}