code: @Override
    @SuppressWarnings("unchecked")
    public <E> Matcher<E> getMatcher() {
      Matcher<E> localMatcher = (Matcher<E>) MatcherHolder.get();
  
      Assert.state(localMatcher != null || matcher != null,
        "A reference to a Matcher used by this Searcher ({0}) for searching and matching elements in the collection was not properly configured!",
          getClass().getName());
  
      return ObjectUtils.defaultIfNull(localMatcher, matcher);
    }
docs: Gets the Matcher used to match and find the desired element or elements in the collection.
  
  @param <E> the Class type of elements in the collection.
  @return the Matcher used to match and find the desired element or elements in the collection during
  the search operation.
  @throws IllegalStateException if the Matcher used by this Searcher was not configured.
  @see #setMatcher(Matcher)
  @see org.cp.elements.util.search.Matcher