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 e;
    }
  
    Element lineNumberElement(ScriptLine line, int lineNumPad) {
      var lineNumber = line == null ? "..." : line.line;
      var e = span("$nbsp${lineNumber.toString().padLeft(lineNumPad,nbsp)}$nbsp");
      e.classes.add('noCopy');
  
      if (lineNumber == _currentLine) {
  