docs: protected void inferClosureParameterTypes(final ClassNode receiver, final Expression arguments, final ClosureExpression expression, final Parameter param, final MethodNode selectedMethod) {
          List<AnnotationNode> annotations = param.getAnnotations(CLOSUREPARAMS_CLASSNODE);
          if (annotations != null && !annotations.isEmpty()) {
              for (AnnotationNode annotation : annotations) {
                  Expression hintClass = annotation.getMember("value");
                  Expression options = annotation.getMember("options");
                  Expression resolverClass = annotation.getMember("conflictResolutionStrategy");
                  if (hintClass instanceof ClassExpression) {
                      doInferClosureParameterTypes(receiver, arguments, expression, selectedMethod, hintClass, resolverClass, options);
                  }
              }
          } else if (isSAMType(param.getOriginType())) {
              // SAM coercion
              inferSAMType(param, receiver, selectedMethod, InvocationWriter.makeArgumentList(arguments), expression);
          }
      }