code: public static LineMap makeLineMap(char[] src, int max, boolean expandTabs) {
          LineMapImpl lineMap = expandTabs ?
              new LineTabMapImpl(max) : new LineMapImpl();
          lineMap.build(src, max);
          return lineMap;
      }
docs: A two-way map between line/column numbers and positions,
  derived from a scan done at creation time.  Tab expansion is
  optionally supported via a character map.  Text content
  is not retained.
  <p>
  Notes:  The first character position FIRSTPOS is at
  (FIRSTLINE,FIRSTCOLUMN).  No account is taken of Unicode escapes.
  
  @param   src         Source characters
  @param   max         Number of characters to read
  @param   expandTabs  If true, expand tabs when calculating columns