anchor.diff:  void testDiffPrettyHtml() {
     // Pretty print.
     List<Diff> diffs = [new Diff(DIFF_EQUAL, 'a\n'), new Diff(DIFF_DELETE, '<B>b</B>'), new Diff(DIFF_INSERT, 'c&d')];
  -  Expect.equals('<span>a&para;<br></span><del style="background:#ffe6e6;">&lt;B&gt;b&lt;/B&gt;</del><ins style="background:#e6ffe6;">c&amp;d</ins>', dmp.diff_prettyHtml(diffs), 'diff_prettyHtml:');
  +  expect('<span>a&para;<br></span><del style="background:#ffe6e6;">&lt;B&gt;b&lt;/B&gt;</del><ins style="background:#e6ffe6;">c&amp;d</ins>', dmp.diff_prettyHtml(diffs), 'diff_prettyHtml:');
   }
   
   void testDiffText() {
     // Compute the source and destination texts.
     List<Diff> diffs = [new Diff(DIFF_EQUAL, 'jump'), new Diff(DIFF_DELETE, 's'), new Diff(DIFF_INSERT, 'ed'), new Diff(DIFF_EQUAL, ' over '), new Diff(DIFF_DELETE, 'the'), new Diff(DIFF_INSERT, 'a'), new Diff(DIFF_EQUAL, ' lazy')];
  -  Expect.equals('jumps over the lazy', dmp.diff_text1(diffs), 'diff_text1:');
  -  Expect.equals('jumped over a lazy', dmp.diff_text2(diffs), 'diff_text2:');
  +  expect('jumps over the lazy', dmp.diff_text1(diffs), reason: 'diff_text1:');
  +  expect('jumped over a lazy', dmp.diff_text2(diffs), reason: 'diff_text2:');
   }
   
   void testDiffDelta() {
     // Convert a diff into delta string.
     List<Diff> diffs = [new Diff(DIFF_EQUAL, 'jump'), new Diff(DIFF_DELETE, 's'), new Diff(DIFF_INSERT, 'ed'), new Diff(DIFF_EQUAL, ' over '), new Diff(DIFF_DELETE, 'the'), new Diff(DIFF_INSERT, 'a'), new Diff(DIFF_EQUAL, ' lazy'), new Diff(DIFF_INSERT, 'old dog')];
     String text1 = dmp.diff_text1(diffs);
  -  Expect.equals('jumps over the lazy', text1, 'diff_text1: Base text.');
  +  expect('jumps over the lazy', text1, reason: 'diff_text1: Base text.');
   
     String delta = dmp.diff_toDelta(diffs);
  -  Expect.equals('=4\t-1\t+ed\t=6\t-3\t+a\t=5\t+old dog', delta, 'diff_toDelta:');
  +  expect('=4\t-1\t+ed\t=6\t-3\t+a\t=5\t+old dog', delta, reason: 'diff_toDelta:');
   
     // Convert delta string into a diff.
     Expect.listEquals(diffs, dmp.diff_fromDelta(text1, delta), 'diff_fromDelta: Normal.');
  
positive.code:   void assertMapEquals(Map a, Map b, String error_msg) {
      Expect.setEquals(a.keys, b.keys, error_msg);
      for (var x in a.keys) {
        Expect.equals(a[x], b[x], "$error_msg [Key: $x]");
      }
    }
  
  
negative.code:   List<Patch> patches;
    patches = dmp.patch_make('abcdefghijklmnopqrstuvwxyz01234567890', 'XabXcdXefXghXijXklXmnXopXqrXstXuvXwxXyzX01X23X45X67X89X0');
    dmp.patch_splitMax(patches);
    expect('@@ -1,32 +1,46 @@\n+X\n ab\n+X\n cd\n+X\n ef\n+X\n gh\n+X\n ij\n+X\n kl\n+X\n mn\n+X\n op\n+X\n qr\n+X\n st\n+X\n uv\n+X\n wx\n+X\n yz\n+X\n 012345\n@@ -25,13 +39,18 @@\n zX01\n+X\n 23\n+X\n 45\n+X\n 67\n+X\n 89\n+X\n 0\n', dmp.patch_toText(patches), reason: 'patch_splitMax: #1.');
  
    patches = dmp.patch_make('abcdef1234567890123456789012345678901234567890123456789012345678901234567890uvwxyz', 'abcdefuvwxyz');
    String oldToText = dmp.patch_toText(patches);
    dmp.patch_splitMax(patches);
    expect(oldToText, dmp.patch_toText(patches), reason: 'patch_splitMax: #2.');
  
    patches = dmp.patch_make('1234567890123456789012345678901234567890123456789012345678901234567890', 'abc');
    dmp.patch_splitMax(patches);
    expect('@@ -1,32 +1,4 @@\n-1234567890123456789012345678\n 9012\n@@ -29,32 +1,4 @@\n-9012345678901234567890123456\n 7890\n@@ -57,14 +1,3 @@\n-78901234567890\n+abc\n', dmp.patch_toText(patches), reason: 'patch_splitMax: #3.');
  
    patches = dmp.patch_make('abcdefghij , h : 0 , t : 1 abcdefghij , h : 0 , t : 1 abcdefghij , h : 0 , t : 1', 'abcdefghij , h : 1 , t : 1 abcdefghij , h : 1 , t : 1 abcdefghij , h : 0 , t : 1');
    dmp.patch_splitMax(patches);
    expect('@@ -2,32 +2,32 @@\n bcdefghij , h : \n-0\n+1\n  , t : 1 abcdef\n@@ -29,32 +29,32 @@\n bcdefghij , h : \n-0\n+1\n  , t : 1 abcdef\n', dmp.patch_toText(patches), reason: 'patch_splitMax: #4.');
  }
  
  void testPatchAddPadding() {
    List<Patch> patches;
    patches = dmp.patch_make('', 'test');
    expect('@@ -0,0 +1,4 @@\n+test\n', dmp.patch_toText(patches), reason: 'patch_addPadding: Both edges full.');
    dmp.patch_addPadding(patches);
    expect('@@ -1,8 +1,12 @@\n %01%02%03%04\n+test\n %01%02%03%04\n', dmp.patch_toText(patches), reason: 'patch_addPadding: Both edges full.');
  
    patches = dmp.patch_make('XY', 'XtestY');
    expect('@@ -1,2 +1,6 @@\n X\n+test\n Y\n', dmp.patch_toText(patches), reason: 'patch_addPadding: Both edges partial.');
    dmp.patch_addPadding(patches);
    expect('@@ -2,8 +2,12 @@\n %02%03%04X\n+test\n Y%01%02%03\n', dmp.patch_toText(patches), reason: 'patch_addPadding: Both edges partial.');
  
    patches = dmp.patch_make('XXXXYYYY', 'XXXXtestYYYY');
    expect('@@ -1,8 +1,12 @@\n XXXX\n+test\n YYYY\n', dmp.patch_toText(patches), reason: 'patch_addPadding: Both edges none.');
    dmp.patch_addPadding(patches);
    expect('@@ -5,8 +5,12 @@\n XXXX\n+test\n YYYY\n', dmp.patch_toText(patches), reason: 'patch_addPadding: Both edges none.');
  }
  
  void testPatchApply() {
  