code: public Object invoke(Object proxy, Method method, Object[] arguments) throws Throwable {
          try {
              String methodName = method.getName();
              Object returnValue;
              if (mountPoint.length() == 0) {
                  if ("getContextPath".equals(methodName) ||
                              "getServletPath".equals(methodName)) {
                      returnValue = "";
                  } else if ("getPathInfo".equals(methodName)) {
                      returnValue = request.getServletPath();
                  } else {
                      returnValue = method.invoke(request, arguments);
                  }
              } else {
                  returnValue = method.invoke(request, arguments);
              }
              return returnValue;
          } catch (InvocationTargetException e) {
              throw e.getTargetException();
          }
      }
docs: <p>invoke.</p>
  
  @param proxy a {@link java.lang.Object} object.
  @param method a {@link java.lang.reflect.Method} object.
  @param arguments an array of {@link java.lang.Object} objects.
  @return a {@link java.lang.Object} object.
  @throws java.lang.Throwable if any.