printDocReturn(typeName + " with the elements of |arg0| before the elements of |arg1|, with the separators in between.");
printDocReturn(typeName + " with the elements of #arg0 before the elements of #arg1, with the separators in between.");
	private void genSeparatedConcat(SeparatedListType type, String typeId,			String typeName, String elementTypeName) {		String decl = typeName + " " + prefix + "concat" + typeId + "("				+ typeName + " arg0, " + buildFormalSeparatorArgs(type)				+ typeName + " arg1)";		hprintln(decl + ";");		printDocHead("Concatenate two " + typeName + "s","");		printDocArg("arg0","first " + typeName);		printDocArg("arg1","second " + typeName);		printDocReturn(typeName + " with the elements of |arg0| before the elements of |arg1|, with the separators in between.");		printDocTail();				println(decl + " {");		println("  if (ATisEmpty((ATermList) arg0)) {");		println("    return arg1;");		println("  }");		// First we 'fake' a new list insertion using the first element of arg0		// as a dummy value		String conversion = genATermToBuiltin(type.getElementType(),				"ATgetFirst((ATermList) arg0)");		println("  arg1 = " + prefix + "make" + typeId + "Many(("				+ elementTypeName + ")" + conversion + ", "				+ buildActualSeparatorArgsForMakeMany(type) + " arg1);");		// Then we remove the dummy value in type unsafe mode to get a list		// that starts with the expected separators		println("  arg1 = (" + typeName + ") ATgetNext((ATermList) arg1);");		// Now we can concatenate		println("  return (" + typeName				+ ") ATconcat((ATermList) arg0, (ATermList) arg1);");		println("}");		println();	}