protected boolean isNameMatches(
        SearchPattern searchPattern, IEObjectDescription eObjectDescription) {
      String qualifiedName = qualifiedNameConverter.toString(eObjectDescription.getQualifiedName());
      if (qualifiedName == null) return false;

      if (searchPattern.matches(qualifiedName)) return true;

      int index = qualifiedName.lastIndexOf("::");
      if (index != -1 && searchPattern.matches(qualifiedName.substring(index + 1))) return true;

      return false;
    }
    protected Predicate<IEObjectDescription> getSearchPredicate(
        final String stringPattern, final Collection<EClass> acceptedClasses) {
      final SearchPattern searchPattern = new SearchPattern();
      searchPattern.setPattern(stringPattern);

      return new Predicate<IEObjectDescription>() {
        public boolean apply(IEObjectDescription input) {
          if (isNameMatches(searchPattern, input) && isClassAccepted(input, acceptedClasses)) {
            return true;
          }
          return false;
        }
      };
    }