/* record declared nullness of a parameter into the method and into the argument (if present). */
 void recordArgNonNullness(
     MethodBinding method,
     int paramCount,
     int paramIdx,
     Argument currentArgument,
     Boolean nonNullNess) {
   if (method.parameterNonNullness == null) method.parameterNonNullness = new Boolean[paramCount];
   method.parameterNonNullness[paramIdx] = nonNullNess;
   if (currentArgument != null) {
     currentArgument.binding.tagBits |=
         nonNullNess.booleanValue() ? TagBits.AnnotationNonNull : TagBits.AnnotationNullable;
   }
 }
 // version for invocation from LambdaExpression:
 static void createArgumentBindings(
     Argument[] arguments, MethodBinding binding, MethodScope scope) {
   boolean useTypeAnnotations = scope.environment().usesNullTypeAnnotations();
   if (arguments != null && binding != null) {
     for (int i = 0, length = arguments.length; i < length; i++) {
       Argument argument = arguments[i];
       binding.parameters[i] = argument.createBinding(scope, binding.parameters[i]);
       if (useTypeAnnotations) continue; // no business with SE7 null annotations in the 1.8 case.
       // createBinding() has resolved annotations, now transfer nullness info from the argument to
       // the method:
       long argTypeTagBits = (argument.binding.tagBits & TagBits.AnnotationNullMASK);
       if (argTypeTagBits != 0) {
         if (binding.parameterNonNullness == null) {
           binding.parameterNonNullness = new Boolean[arguments.length];
           binding.tagBits |= TagBits.IsNullnessKnown;
         }
         binding.parameterNonNullness[i] =
             Boolean.valueOf(argTypeTagBits == TagBits.AnnotationNonNull);
       }
     }
   }
 }