private ParameterDefinitionBuilder makeCallableCallParam(long flags, int ii) {
   JCExpression type = gen.makeIdent(gen.syms().objectType);
   if ((flags & Flags.VARARGS) != 0) {
     type = gen.make().TypeArray(type);
   }
   ParameterDefinitionBuilder pdb = ParameterDefinitionBuilder.instance(gen, getParamName(ii));
   pdb.modifiers(Flags.FINAL | flags);
   pdb.type(type, null);
   return pdb;
   /*
   return gen.make().VarDef(gen.make().Modifiers(Flags.FINAL | Flags.PARAMETER | flags),
           makeParamName(gen, ii), type, null);
           */
 }
 private MethodDefinitionBuilder parameter(
     long modifiers,
     String name,
     String aliasedName,
     TypedDeclaration decl,
     TypedDeclaration nonWideningDecl,
     ProducedType nonWideningType,
     int flags) {
   ParameterDefinitionBuilder pdb = ParameterDefinitionBuilder.instance(gen, name);
   pdb.modifiers(modifiers);
   pdb.aliasName(aliasedName);
   pdb.sequenced(decl instanceof Parameter && ((Parameter) decl).isSequenced());
   pdb.defaulted(decl instanceof Parameter && ((Parameter) decl).isDefaulted());
   pdb.type(paramType(nonWideningDecl, nonWideningType, flags), gen.makeJavaTypeAnnotations(decl));
   return parameter(pdb);
 }