@Nonnull
    public static <T extends AbstractPattern> List<T> toList(@Nonnull Iterable<? extends T> in) {
        List<T> out = new ArrayList<T>();
        for (T i : in)
            out.add(i);
        return out;
    }
@ Nonnull public static < T extends AbstractPattern > List < T > toList ( @ Nonnull Iterable < ? extends T > in ) { List < T > out = new ArrayList < T > ( ) ; for ( T i : in ) out . add ( i ) ; return out ; }
Copies the given {@link Iterable} into a new {@link List}.

@param <T> The free parameter for the element type.
@param in The Iterable to copy.
@return A new, mutable {@link ArrayList}.