code: public int getRunLimit(int run)
      {
          verifyValidParaOrLine();
          BidiLine.getRuns(this);
          verifyRange(run, 0, runCount);
          getLogicalToVisualRunsMap();
          int idx = logicalToVisualRunsMap[run];
          int len = idx == 0 ? runs[idx].limit :
                                  runs[idx].limit - runs[idx-1].limit;
          return runs[idx].start + len;
      }
docs: Return the index of the character past the end of the nth logical run in
  this line, as an offset from the start of the line. For example, this
  will return the length of the line for the last run on the line.
  
  @param run the index of the run, between 0 and <code>countRuns()</code>
  
  @return the limit of the run
  
  @throws IllegalStateException if this call is not preceded by a successful
  call to <code>setPara</code> or <code>setLine</code>
  @throws IllegalArgumentException if <code>run</code> is not in
  the range <code>0&lt;=run&lt;countRuns()</code>