String field_class = getClassName(field_type);
String field_class = TypeGenerator.className(field_type);
	private void genOverrrideSetArgument(Type type, Alternative alt) {			String alt_classname = AlternativeGenerator.getAltClassName(type,alt);					println("  public aterm.ATermAppl setArgument(aterm.ATerm arg, int i) {");			if (type.getAltArity(alt) > 0) {			  println("    switch(i) {");					  Iterator fields = type.altFieldIterator(alt.getId());			  for (int i = 0; fields.hasNext(); i++) {				  Field field = (Field) fields.next();				  String field_type = field.getType();				  String field_class = getClassName(field_type);			  				  String instance_of;							  if (field_type.equals("str")) {					  instance_of = "aterm.ATermAppl";				  }				  else if (field_type.equals("int")) {					  instance_of = "aterm.ATermInt";				  }				  else if (field_type.equals("double")) {					  instance_of = "aterm.ATermReal";				  }				  else if (field_type.equals("term")) {					  instance_of = "aterm.ATerm";				  }				  else {					  instance_of = field_class;				  }							  println("      case " + i + ":");				  println("        if (! (arg instanceof " + instance_of + ")) { ");				  println("          throw new RuntimeException(\"Argument " + i + " of a " + alt_classname +							" should have type " + field_type + "\");");				  println("        }");				  println("        break;");			  }			  println("      default: throw new RuntimeException(\"" + alt_classname + " does not have an argument at \" + i );");			  println("    }");			  println("    return super.setArgument(arg, i);");			}			else {				println("      throw new RuntimeException(\"" + alt_classname + " has no arguments\");");			}			println("  }");		}