docs: public Filter applyIndex(Map mapIndexes, Set setKeys)
          {
          MapIndex index = (MapIndex) mapIndexes.get(getValueExtractor());
          if (index == null)
              {
              // there is no relevant index
              return this;
              }
  
          Map     candidates     = index.getIndexContents();
          Set     matches        = new HashSet();
          boolean abortIfNoMatch = false;
  
          if (!m_ignoreCase && index.isOrdered())
              {
              candidates     = ((SortedMap) candidates).tailMap(getFilterString());
              abortIfNoMatch = true;
              }
  
          for (Object entry : candidates.entrySet())
              {
              Map.Entry indexEntry    = (Map.Entry) entry;
              String    propertyValue = (String) indexEntry.getKey();
              if (isMatch(propertyValue))
                  {
                  matches.addAll((Set) indexEntry.getValue());
                  }
              else if (abortIfNoMatch)
                  {
                  break;
                  }
              }
  
          setKeys.retainAll(matches);
          return null;
          }