code: boolean advance(BytesRef word, int offset) throws IOException {
      if (!isAdvancing())
        return false;
  
      Object iVal = cursor.getDocIds();
  
      if (word != null && cursor.advance(word)) {
  
        if (iVal != null) {
          addBeforeLL(new TagLL(head, null, startOffset, endOffset, iVal));
        }
  
        assert offset >= endOffset;
        endOffset = offset;
        return true;
      } else {
        this.value = iVal;
        this.cursor = null;
        if (iVal == null)
          removeLL();
        return false;
      }
    }
docs: Advances this tag with "word" at offset "offset".  If this tag is not in
  an advancing state then it does nothing. If it is advancing and prior to
  advancing further it sees a value, then a non-advancing tag may be inserted
  into the LL as side-effect. If this returns false (it didn't advance) and
  if there is no value, then it will also be removed.
  
  
  @param word      The next word or null if at an end
  @param offset    The last character in word's offset in the underlying
  stream. If word is null then it's meaningless.
  
  @return          Whether it advanced or not.
  
  @throws java.io.IOException