code: public Signature dropArg(String name) {
          String[] newArgNames = new String[argNames.length - 1];
          MethodType newType = methodType;
  
          for (int i = 0, j = 0; i < argNames.length; i++) {
              if (argNames[i].equals(name)) {
                  newType = newType.dropParameterTypes(j, j + 1);
                  continue;
              }
              newArgNames[j++] = argNames[i];
          }
  
          if (newType == null) {
              // arg name not found; should we error?
              return this;
          }
  
          return new Signature(newType, newArgNames);
      }
docs: Drops the first argument with the given name.
  
  @param name the name of the argument to drop
  @return a new signature