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