code: public int getCharno() {
      Node cur = curNode;
      while (cur != null) {
        int line = cur.getCharno();
        if (line >= 0) {
          return line;
        }
        cur = cur.getParent();
      }
      return 0;
    }
docs: Gets the current char number, or zero if it cannot be determined. The line
  number is retrieved lazily as a running time optimization.