docs: public static Object use(Object self, Object[] array) {
          if (array.length < 2)
              throw new IllegalArgumentException(
                      "Expecting at least 2 arguments, a category class and a Closure");
          Closure closure;
          try {
              closure = (Closure) array[array.length - 1];
          } catch (ClassCastException e) {
              throw new IllegalArgumentException("Expecting a Closure to be the last argument");
          }
          List<Class> list = new ArrayList<Class>(array.length - 1);
          for (int i = 0; i < array.length - 1; ++i) {
              Class categoryClass;
              try {
                  categoryClass = (Class) array[i];
              } catch (ClassCastException e) {
                  throw new IllegalArgumentException("Expecting a Category Class for argument " + i);
              }
              list.add(categoryClass);
          }
          return GroovyCategorySupport.use(list, closure);
      }