public Prototype withFirstParameter(Type param) {
    String newDesc = "(" + param.getDescriptor() + descriptor.substring(1);
    StdTypeList newParams = parameterTypes.withFirst(param);

    newParams.setImmutable();

    Prototype result = new Prototype(newDesc, returnType, newParams);

    return putIntern(result);
  }
Returns a new interned instance, which is the same as this instance, except that it has an
additional parameter prepended to the original's argument list.

@param param {@code non-null;} the new first parameter
@return {@code non-null;} an appropriately-constructed instance
android/android_framework/dex-maker/src/main/java/com/android/dx/rop/type/Prototype.java