docs: public static <T> Collection<T> grep(Collection<T> self, Object filter) {
          Collection<T> answer = createSimilarCollection(self);
          BooleanReturningMethodInvoker bmi = new BooleanReturningMethodInvoker("isCase");
          for (T element : self) {
              if (bmi.invoke(filter, element)) {
                  answer.add(element);
              }
          }
          return answer;
      }