code: static <T> Object[] arguments(final Class<T> klass, final T instance,
                                    final Class<?>[] types,
                                    final String[] literals)
              throws ReflectiveOperationException {
          final Object[] arguments = new Object[literals.length];
          for (int i = 0; i < literals.length; i++) {
              if ("null".equals(literals[i])) {
                  arguments[i] = null;
                  continue;
              }
              if (literals[i].startsWith(":")) {
                  final String name = literals[i].substring(1);
                  final Field field = field(klass, name);
                  if (!field.isAccessible()) {
                      field.setAccessible(true);
                  }
                  arguments[i] = field.get(instance);
                  continue;
              }
              if (types[i] == String.class) {
                  arguments[i] = literals[i];
                  continue;
              }
              if (types[i].isPrimitive()) {
                  types[i] = wrapper(types[i]);
              }
              arguments[i] = types[i]
                      .getMethod("valueOf", String.class)
                      .invoke(null, literals[i]);
          }
          return arguments;
      }
docs: -------------------------------------------------------------------------