code: public List<Product> searchFor(final Optional<String> searchTerm) {
          if (searchTerm.isPresent()) {
              return products
                      .stream()
                      .filter(matchingProductsFor(searchTerm.get()))
                      .collect(toList());
          } else {
              return products;
          }
  
      }
docs: Searches for products using a case-insensitive search term.
  
  @param searchTerm expression to search for
  @return List of matching products, or an empty list.