code: public static <T, IV, P> IV injectIntoWith(
              IV injectValue,
              Iterable<T> iterable,
              Function3<? super IV, ? super T, ? super P, ? extends IV> function,
              P parameter)
      {
          if (iterable instanceof MutableCollection)
          {
              return ((MutableCollection<T>) iterable).injectIntoWith(injectValue, function, parameter);
          }
          if (iterable instanceof ArrayList)
          {
              return ArrayListIterate.injectIntoWith(injectValue, (ArrayList<T>) iterable, function, parameter);
          }
          if (iterable instanceof RandomAccess)
          {
              return RandomAccessListIterate.injectIntoWith(injectValue, (List<T>) iterable, function, parameter);
          }
          if (iterable != null)
          {
              return IterableIterate.injectIntoWith(injectValue, iterable, function, parameter);
          }
          throw new IllegalArgumentException("Cannot perform an injectIntoWith on null");
      }
docs: Similar to {@link #injectInto(Object, Iterable, Function2)}, except with a parameter is used as third generic argument in function3.