code: public static <T, IV> Twin<MutableList<T>> selectAndRejectWith(
              Iterable<T> iterable,
              Predicate2<? super T, ? super IV> predicate,
              IV injectedValue)
      {
          if (iterable instanceof MutableCollection)
          {
              return ((MutableCollection<T>) iterable).selectAndRejectWith(predicate, injectedValue);
          }
          if (iterable instanceof ArrayList)
          {
              return ArrayListIterate.selectAndRejectWith((ArrayList<T>) iterable, predicate, injectedValue);
          }
          if (iterable instanceof List)
          {
              return ListIterate.selectAndRejectWith((List<T>) iterable, predicate, injectedValue);
          }
          if (iterable != null)
          {
              return IterableIterate.selectAndRejectWith(iterable, predicate, injectedValue);
          }
          throw new IllegalArgumentException("Cannot perform a selectAndRejectWith on null");
      }
docs: Filters a collection into two separate collections based on a predicate returned via a Twin.
  <p>
  Example using a Java 8 lambda expression:
  <pre>
  Twin&lt;MutableList&lt;Person&gt;&gt;selectedRejected =
  Iterate.<b>selectAndRejectWith</b>(people, (Person person, String lastName) -> lastName.equals(person.getLastName()), "Mason");
  </pre>
  <p>
  Example using an anonymous inner class:
  <pre>
  Twin&lt;MutableList&lt;Person&gt;&gt;selectedRejected =
  Iterate.<b>selectAndRejectWith</b>(people, new Predicate2&lt;String, String&gt;()
  {
  public boolean accept(Person person, String lastName)
  {
  return lastName.equals(person.getLastName());
  }
  }, "Mason");
  </pre>