anchor.diff:  
       for (final arg in ctor.parameters) {
         final field = fields[arg.name];
  -      if (arg.parameterKind == ParameterKind.REQUIRED) {
  +      if (arg.hasRequired) {
           if (field != null) {
             if (field.isFinal && !field.dontDecode) {
               ctorArguments.add(arg);
  
positive.code:         } else {
            ctorArguments.add(null);
          }
        } else if (arg.parameterKind == ParameterKind.NAMED) {
          if (field != null && !field.dontDecode && field.isFinal) {
            ctorNamedArguments.add(arg);
          }
  
negative.code:     }
  
      if (processor != null) {
        throw new JCException("FieldProcessor ${processor
                .instantiationString} processes deserializes ${processor
                .deserializedStr} to ${processor
                .serializedStr}. But field has type ${type.displayName}.");
      }
  
      if (isBuiltin(type)) {
  