code: public Signature exclude(String... excludeArgs) {
          Pattern[] patterns = new Pattern[excludeArgs.length];
          for (int i = 0; i < excludeArgs.length; i++) patterns[i] = Pattern.compile(excludeArgs[i]);
  
          List<Class<?>> types = new ArrayList<>(argNames.length);
          List<String> names = new ArrayList<>(argNames.length);
  
          OUTER:
          for (int argOffset = 0; argOffset < argNames.length; argOffset++) {
              String arg = argNames[argOffset];
              for (Pattern pattern : patterns) {
                  Matcher matcher = pattern.matcher(arg);
                  if (matcher.find()) continue OUTER;
              }
  
              // no matches, include
              types.add(methodType.parameterType(argOffset));
              names.add(arg);
          }
          return new Signature(MethodType.methodType(methodType.returnType(), types.toArray(new Class<?>[0])), names.toArray(new String[0]));
      }
docs: Create a new signature containing the same return value as this one, but
  omitting the specified arguments. Blacklisting to #permute's whitelisting.
  
  @param excludeArgs the names of the arguments to exclude
  @return the new signature