code: @SuppressWarnings("unchecked")
      public static <E> List<E> invoke(final Iterable<E> iterable, final String methodName,
                                    final List<Object> args) {
          final List<E> result = newArrayList();
          final List<Class<?>> argTypes = map(args, new Function<Object, Class<?>>() {
              public Class<?> apply(Object input) {
                  return input.getClass();
              }
          });
          try {
              final Method method = iterable.iterator().next().getClass().getMethod(methodName, argTypes.toArray(
                  new Class[argTypes.size()]));
              for (E arg : iterable) {
                  try {
                      result.add((E) method.invoke(arg, args.toArray(new Object[args.size()])));
                  } catch (Exception e) {
                      throw new IllegalArgumentException(e);
                  }
              }
          } catch (NoSuchMethodException e) {
              throw new IllegalArgumentException(e);
          }
          return result;
      }
docs: /*
  Documented, #invoke