public boolean hasNext() {
      // simple: check the current list for a successor
      if (listHasNext()) {
        return true;
      }

      // already reached the tree map iterator ?
      if (_mapIterator != null) {
        while (_mapIterator.hasNext()) {
          _currentList = (PropertyList)_mapIterator.next();
          if (listHasNext()) {
            return true;
          }
        }
        
      // ... or still the direct index array ?
      } else {
        if (_parent._asciiArray != null) {
          while (++_currentIndex < DIRECT_INDEX_COUNT) {
            if ((_currentList = _parent._asciiArray[_currentIndex]) != null) {
              if (listHasNext()) {
                return true;
              }
            }
          }
        }
        if (_parent._nonASCIIMap != null) {
          _mapIterator = _parent._nonASCIIMap.values().iterator();
          _currentList = null;
          return hasNext();
        }
      }

      // no (more) sequences
      return false;
    }