println("    int b = " + goldenratio + ";");
println("    int b = (getAFun().hashCode()<<8);");
	private void genAltHashFunction(Type type, Alternative alt) 	  {       		if (!hasReservedTypeFields(type,alt)) {		  int arity = type.getAltArity(alt);		  String goldenratio = "0x9e3779b9";		  int changingArg = guessChangingArgument(type,alt);		  String initval;    		  if (changingArg > 0) {			initval = "getArgument(" + changingArg + ").hashCode()";		  }		  else {			initval = "0";		  }    		  println("  protected int hashFunction() {");		  println("    int c = " + initval + " + (getAnnotations().hashCode()<<8);");		  println("    int a = " + goldenratio + ";");		  println("    int b = " + goldenratio + ";");                /* This piece of code generates a number of shifts following the            * algorithm of the Doobs hash functions (Google: Doobs), you can find            * a general implementation in shared.HashFunctions of the shared-objects           * library. This code specializes the algorithm for a fixed number of           * arguments.           */		  for (int i = arity - 1; i >= 0; i--) {			int shift = (i%4) * 8;			println("    " + "aaaabbbbcccc".toCharArray()[i%12] + 					" += (getArgument(" + i + ").hashCode() << " + 					shift + ");");		  }  		  println();		  println("    a -= b; a -= c; a ^= (c >> 13);");		  println("    b -= c; b -= a; b ^= (a << 8);");		  println("    c -= a; c -= b; c ^= (b >> 13);");		  println("    a -= b; a -= c; a ^= (c >> 12);");		  println("    b -= c; b -= a; b ^= (a << 16);");		  println("    c -= a; c -= b; c ^= (b >> 5);");		  println("    a -= b; a -= c; a ^= (c >> 3);");		  println("    b -= c; b -= a; b ^= (a << 10);");		  println("    c -= a; c -= b; c ^= (b >> 15);");		  println();		  println("    return c;");		  println("  }");		}		}