code: protected static int mergeLineCharNo(int lineno, int charno) {
      if (lineno < 0 || charno < 0) {
        return -1;
      } else if ((charno & ~COLUMN_MASK) != 0) {
        return lineno << COLUMN_BITS | COLUMN_MASK;
      } else {
        return lineno << COLUMN_BITS | (charno & COLUMN_MASK);
      }
    }
docs: Merges the line number and character number in one integer. The Character
  number takes the first 12 bits and the line number takes the rest. If
  the character number is greater than <code>2<sup>12</sup>-1</code> it is
  adjusted to <code>2<sup>12</sup>-1</code>.