code: @SuppressWarnings("unchecked")
    public static <T extends Searcher> T createSearcher(final SearchType type) {
      switch (ObjectUtils.defaultIfNull(type, SearchType.UNKNOWN_SEARCH)) {
        case BINARY_SEARCH:
          return (T) new BinarySearch();
        case LINEAR_SEARCH:
          return (T) new LinearSearch();
        default:
          throw new IllegalArgumentException(String.format("The SearchType (%1$s) is not supported by the %2$s!", type,
            SearcherFactory.class.getSimpleName()));
      }
    }
docs: Creates an instance of the Searcher interface implementing the searching algorithm based on the SearchType.
  
  @param <T> the Class type of the actual Searcher implementation based on the SearchType.
  @param type the type of searching algorithm Searcher implementation to create.
  @return a Searcher implementation subclass that implements the searching algorithm based on the SearchType.
  @see org.cp.elements.util.search.Searcher
  @see org.cp.elements.util.search.SearchType