code: private static Object[] copyArgumentsForInnerOrLocalOrAnonymousClass(Object[] args, Class<?> sig,
                                                                           boolean excludeEnclosingInstance) {
          Object[] newArgs = new Object[args.length - 1];
          final int start;
          final int end;
          int j = 0;
  
          if ((args[0] == null && sig == null)|| excludeEnclosingInstance) {
              start = 1;
              end = args.length;
          } else {
              start = 0;
              end = args.length - 1;
          }
  
          for (int i = start; i < end; i++) {
              newArgs[j++] = args[i];
          }
          args = newArgs;
          return args;
      }
docs: The first parameter of an inner, local or anonymous inner class is
  {@code null} or the enclosing instance. This should not be included
  in the substitute invocation since it is never expected by the user.
  <p/>
  Seems with Javassist 3.17.1-GA & Java 7, the '{@code null}' is passed as the last argument.