docs: public static <T> T[] filter(T[] array, Filter<T> filter) {
  		if(null == filter) {
  			return array;
  		}
  		
  		final ArrayList<T> list = new ArrayList<T>(array.length);
  		for (T t : array) {
  			if (filter.accept(t)) {
  				list.add(t);
  			}
  		}
  		final T[] result = newArray(array.getClass().getComponentType(), list.size());
  		return list.toArray(result);
  	}