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);
}

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 .
