private static int loadInstruction(TypeMirror type) {
    switch (type.getKind()) {
      case DECLARED:
      case ARRAY:
        return ALOAD;
      case LONG:
        return LLOAD;
      case FLOAT:
        return FLOAD;
      case DOUBLE:
        return DLOAD;
      case BYTE:
      case SHORT:
      case CHAR:
      case INT:
      case BOOLEAN:
        // These are all represented as int local variables.
        return ILOAD;
      default:
        // We expect the caller to have erased the parameters so we shouldn't be seeing type
        // variables or whatever.
        throw new IllegalArgumentException("Unexpected type " + type);
    }
  }
The bytecode instruction that copies a parameter of the given type onto the JVM stack.
value/src/main/java/com/google/auto/value/processor/ForwardingClassGenerator.java