return headWord.toSexp();
return Language.treebank.constructPreterminal(headWord);
  public Sexp toSexp() {    if (isPreterminal()) {      return headWord.toSexp();    }    else {      int len = numLeftChildren() + numRightChildren() + 2;      SexpList list = new SexpList(len);      // first, add label of this node      list.add(label);      // then, add left subtrees in order      for (SLNode curr = leftChildren; curr != null; curr = curr.next())        list.add(((CKYItem)curr.data()).toSexp());      // next, add head child's subtree      list.add(headChild.toSexp());      // finally, add right children in reverse order      if (rightChildren != null) {        LinkedList rcList = rightChildren.toList();        ListIterator it = rcList.listIterator(rcList.size());        while (it.hasPrevious()) {          CKYItem item = (CKYItem)it.previous();          list.add(item.toSexp());        }      }      return list;    }  }