code: @Override
    public <E> E search(final Searchable<E> searchable) {
      try {
        return search(configureMatcher(searchable).asList());
      }
      finally {
        MatcherHolder.unset();
      }
    }
docs: Searches the Searchable object in order to find the element or elements matching the criteria defined
  by the Matcher.
  
  @param <E> the Class type of elements to search in the Searchable object.
  @param searchable the Searchable object to search.
  @return the element in the Searchable object matching the search criteria defined by the Matcher.
  @see #configureMatcher(Searchable)
  @see #search(java.util.Collection)
  @see org.cp.elements.util.search.Searchable#asList()