code: @Override
      public Class[] getParameterTypes() {
          Class[] a, b, result;
  
          a = base.getParameterTypes();
          b = para.getParameterTypes();
          result = new Class[a.length - 1 + b.length];
          System.arraycopy(a, 0,  result, 0,  idx);
          System.arraycopy(b, 0,  result, idx, b.length);
          System.arraycopy(a, idx + 1,  result, idx + b.length,
                           a.length - (idx + 1));
          return result;
      }
docs: Gets the argument count. The parameter function takes away 1
  argument from the base function, but it adds its own arguments.
  @return  the argument count