code: static String getArgumentTypesAsString(Object... arguments) {
          StringBuilder argumentsAsString = new StringBuilder();
          final String noParameters = "<none>";
          if (arguments != null && arguments.length != 0) {
              for (int i = 0; i < arguments.length; i++) {
                  String argumentName = null;
                  Object argument = arguments[i];
  
                  if (argument instanceof Class<?>) {
                      argumentName = ((Class<?>) argument).getName();
                  } else if (argument instanceof Class<?>[] && arguments.length == 1) {
                      Class<?>[] argumentArray = (Class<?>[]) argument;
                      if (argumentArray.length > 0) {
                          for (int j = 0; j < argumentArray.length; j++) {
                              appendArgument(argumentsAsString, j,
                                      argumentArray[j] == null ? "null" : getUnproxyType(argumentArray[j]).getName(),
                                      argumentArray);
                          }
                          return argumentsAsString.toString();
                      } else {
                          argumentName = noParameters;
                      }
                  } else if (argument == null) {
                      argumentName = "null";
                  } else {
                      argumentName = getUnproxyType(argument).getName();
                  }
                  appendArgument(argumentsAsString, i, argumentName, arguments);
              }
          } else {
              argumentsAsString.append("<none>");
          }
          return argumentsAsString.toString();
      }
docs: Gets the argument types as string.
  
  @param arguments the arguments
  @return the argument types as string