code: public static <T, R extends Collection<T>> R select(
              Iterable<T> iterable,
              Predicate<? super T> predicate,
              R targetCollection)
      {
          if (iterable instanceof RichIterable)
          {
              return ((RichIterable<T>) iterable).select(predicate, targetCollection);
          }
          if (iterable instanceof ArrayList)
          {
              return ArrayListIterate.select((ArrayList<T>) iterable, predicate, targetCollection);
          }
          if (iterable instanceof List)
          {
              return ListIterate.select((List<T>) iterable, predicate, targetCollection);
          }
          if (iterable != null)
          {
              return IterableIterate.select(iterable, predicate, targetCollection);
          }
          throw new IllegalArgumentException("Cannot perform a select on null");
      }
docs: Same as the select method with two parameters but uses the specified target collection
  <p>
  Example using Java 8 lambda:
  <pre>
  MutableList&lt;Person&gt; selected =
  Iterate.<b>select</b>(people, person -> person.person.getLastName().equals("Smith"), FastList.newList());
  </pre>
  <p>
  Example using anonymous inner class:
  <pre>
  MutableList&lt;Person&gt; selected =
  Iterate.<b>select</b>(people, new Predicate&lt;Person&gt;()
  {
  public boolean accept(Person person)
  {
  return person.person.getLastName().equals("Smith");
  }
  }, FastList.newList());
  </pre>
  <p>
  Example using Predicates factory:
  <pre>
  MutableList&lt;Person&gt; selected = Iterate.<b>select</b>(collection, Predicates.attributeEqual("lastName", "Smith"), FastList.newList());
  </pre>