anchor.diff:      return annotation;
     }
   
  -  Element lineElement(ScriptLine line) {
  +  Element lineElement(ScriptLine line, int lineNumPad) {
       var e = new DivElement();
       e.classes.add("sourceRow");
       e.append(lineBreakpointElement(line));
  -    e.append(lineNumberElement(line));
  +    e.append(lineNumberElement(line, lineNumPad));
       e.append(lineSourceElement(line));
       return e;
     }
  
positive.code:           if (blankLineCount < 4) {
              // Too few blank lines for an elipsis.
              for (int j = firstBlank; j  <= lastBlank; j++) {
                table.append(lineElement(script.getLine(j)));
              }
            } else {
              // Add an elipsis for the skipped region.
              table.append(lineElement(script.getLine(firstBlank)));
              table.append(lineElement(null));
              table.append(lineElement(script.getLine(lastBlank)));
            }
            blankLineCount = 0;
          }
          table.append(lineElement(line));
        }
      }
  
  
negative.code:       return table;
      }
  
      var endLine = (endPos != null
                     ? script.tokenToLine(endPos)
                     : script.lines.length + script.lineOffset);
      var lineNumPad = endLine.toString().length;
  
      annotationsCursor = 0;
  
      int blankLineCount = 0;
  