Word currWord = (curr.data() == null ? stopWord : ((CKYItem)curr.data()).headWord());
  private final WordList getPrevModWords(CKYItem item, SLNode modChildren,					 boolean side) {    if (modChildren == null)      return startWordList;    WordList wordList =      side == LEFT ? prevModWordLeftLookupList : prevModWordRightLookupList;    int i = 0; // the index of the previous mod head wordlist    // as long as there are children and we haven't reached the numPrevWords    // limit, set elements of wordList, starting at index 0 (i = 0, initially)    for (SLNode curr = modChildren; curr!=null && i < numPrevWords;) {      Word currWord = (curr.data() == null ? stopWord :		       ((CKYItem)curr.data()).headWord());      Word prevWord = (curr.next() == null ? startWord :		       (Word)((CKYItem)curr.next().data()).headWord());      if (!Shifter.skip(item, prevWord, currWord))	wordList.set(i++, prevWord);      curr = curr.next();    }    // if we ran out of children, but haven't finished setting all numPrevWords    // elements of word list, set remainder of word list with startWord    if (i == 0)      return startWordList;    for ( ; i < numPrevWords; i++)      wordList.set(i, startWord);    return wordList;  }