anchor.diff:    // Bitap algorithm.
     dmp.Match_Distance = 100;
     dmp.Match_Threshold = 0.5;
  -  Expect.equals(5, dmp._match_bitap('abcdefghijk', 'fgh', 5), 'match_bitap: Exact match #1.');
  -
  -  Expect.equals(5, dmp._match_bitap('abcdefghijk', 'fgh', 0), 'match_bitap: Exact match #2.');
  -
  -  Expect.equals(4, dmp._match_bitap('abcdefghijk', 'efxhi', 0), 'match_bitap: Fuzzy match #1.');
  -
  -  Expect.equals(2, dmp._match_bitap('abcdefghijk', 'cdefxyhijk', 5), 'match_bitap: Fuzzy match #2.');
  -
  -  Expect.equals(-1, dmp._match_bitap('abcdefghijk', 'bxy', 1), 'match_bitap: Fuzzy match #3.');
  -
  -  Expect.equals(2, dmp._match_bitap('123456789xx0', '3456789x0', 2), 'match_bitap: Overflow.');
  -
  -  Expect.equals(0, dmp._match_bitap('abcdef', 'xxabc', 4), 'match_bitap: Before start match.');
  -
  -  Expect.equals(3, dmp._match_bitap('abcdef', 'defyy', 4), 'match_bitap: Beyond end match.');
  -
  -  Expect.equals(0, dmp._match_bitap('abcdef', 'xabcdefy', 0), 'match_bitap: Oversized pattern.');
  +  expect(5, dmp._match_bitap('abcdefghijk', 'fgh', 5), reason: 'match_bitap: Exact match #1.');
  +
  +  expect(5, dmp._match_bitap('abcdefghijk', 'fgh', 0), reason: 'match_bitap: Exact match #2.');
  +
  +  expect(4, dmp._match_bitap('abcdefghijk', 'efxhi', 0), reason: 'match_bitap: Fuzzy match #1.');
  +
  +  expect(2, dmp._match_bitap('abcdefghijk', 'cdefxyhijk', 5), reason: 'match_bitap: Fuzzy match #2.');
  +
  +  expect(-1, dmp._match_bitap('abcdefghijk', 'bxy', 1), reason: 'match_bitap: Fuzzy match #3.');
  +
  +  expect(2, dmp._match_bitap('123456789xx0', '3456789x0', 2), reason: 'match_bitap: Overflow.');
  +
  +  expect(0, dmp._match_bitap('abcdef', 'xxabc', 4), reason: 'match_bitap: Before start match.');
  +
  +  expect(3, dmp._match_bitap('abcdef', 'defyy', 4), reason: 'match_bitap: Beyond end match.');
  +
  +  expect(0, dmp._match_bitap('abcdef', 'xabcdefy', 0), reason: 'match_bitap: Oversized pattern.');
   
     dmp.Match_Threshold = 0.4;
  -  Expect.equals(4, dmp._match_bitap('abcdefghijk', 'efxyhi', 1), 'match_bitap: Threshold #1.');
  +  expect(4, dmp._match_bitap('abcdefghijk', 'efxyhi', 1), reason: 'match_bitap: Threshold #1.');
   
     dmp.Match_Threshold = 0.3;
  -  Expect.equals(-1, dmp._match_bitap('abcdefghijk', 'efxyhi', 1), 'match_bitap: Threshold #2.');
  +  expect(-1, dmp._match_bitap('abcdefghijk', 'efxyhi', 1), reason: 'match_bitap: Threshold #2.');
   
     dmp.Match_Threshold = 0.0;
  -  Expect.equals(1, dmp._match_bitap('abcdefghijk', 'bcdef', 1), 'match_bitap: Threshold #3.');
  +  expect(1, dmp._match_bitap('abcdefghijk', 'bcdef', 1), reason: 'match_bitap: Threshold #3.');
   
     dmp.Match_Threshold = 0.5;
  -  Expect.equals(0, dmp._match_bitap('abcdexyzabcde', 'abccde', 3), 'match_bitap: Multiple select #1.');
  -
  -  Expect.equals(8, dmp._match_bitap('abcdexyzabcde', 'abccde', 5), 'match_bitap: Multiple select #2.');
  +  expect(0, dmp._match_bitap('abcdexyzabcde', 'abccde', 3), reason: 'match_bitap: Multiple select #1.');
  +
  +  expect(8, dmp._match_bitap('abcdexyzabcde', 'abccde', 5), reason: 'match_bitap: Multiple select #2.');
   
     dmp.Match_Distance = 10;  // Strict location.
  -  Expect.equals(-1, dmp._match_bitap('abcdefghijklmnopqrstuvwxyz', 'abcdefg', 24), 'match_bitap: Distance test #1.');
  -
  -  Expect.equals(0, dmp._match_bitap('abcdefghijklmnopqrstuvwxyz', 'abcdxxefg', 1), 'match_bitap: Distance test #2.');
  +  expect(-1, dmp._match_bitap('abcdefghijklmnopqrstuvwxyz', 'abcdefg', 24), reason: 'match_bitap: Distance test #1.');
  +
  +  expect(0, dmp._match_bitap('abcdefghijklmnopqrstuvwxyz', 'abcdxxefg', 1), reason: 'match_bitap: Distance test #2.');
   
     dmp.Match_Distance = 1000;  // Loose location.
  -  Expect.equals(0, dmp._match_bitap('abcdefghijklmnopqrstuvwxyz', 'abcdefg', 24), 'match_bitap: Distance test #3.');
  +  expect(0, dmp._match_bitap('abcdefghijklmnopqrstuvwxyz', 'abcdefg', 24), reason: 'match_bitap: Distance test #3.');
   }
   
   void testMatchMain() {
     // Full match.
  -  Expect.equals(0, dmp.match_main('abcdef', 'abcdef', 1000), 'match_main: Equality.');
  -
  -  Expect.equals(-1, dmp.match_main('', 'abcdef', 1), 'match_main: Null text.');
  -
  -  Expect.equals(3, dmp.match_main('abcdef', '', 3), 'match_main: Null pattern.');
  -
  -  Expect.equals(3, dmp.match_main('abcdef', 'de', 3), 'match_main: Exact match.');
  -
  -  Expect.equals(3, dmp.match_main('abcdef', 'defy', 4), 'match_main: Beyond end match.');
  -
  -  Expect.equals(0, dmp.match_main('abcdef', 'abcdefy', 0), 'match_main: Oversized pattern.');
  +  expect(0, dmp.match_main('abcdef', 'abcdef', 1000), reason: 'match_main: Equality.');
  +
  +  expect(-1, dmp.match_main('', 'abcdef', 1), reason: 'match_main: Null text.');
  +
  +  expect(3, dmp.match_main('abcdef', '', 3), reason: 'match_main: Null pattern.');
  +
  +  expect(3, dmp.match_main('abcdef', 'de', 3), reason: 'match_main: Exact match.');
  +
  +  expect(3, dmp.match_main('abcdef', 'defy', 4), reason: 'match_main: Beyond end match.');
  +
  +  expect(0, dmp.match_main('abcdef', 'abcdefy', 0), reason: 'match_main: Oversized pattern.');
   
     dmp.Match_Threshold = 0.7;
  -  Expect.equals(4, dmp.match_main('I am the very model of a modern major general.', ' that berry ', 5), 'match_main: Complex match.');
  +  expect(4, dmp.match_main('I am the very model of a modern major general.', ' that berry ', 5), reason: 'match_main: Complex match.');
     dmp.Match_Threshold = 0.5;
   
     // Test null inputs.
  
positive.code:   String strp = '@@ -21,18 +22,17 @@\n jump\n-s\n+ed\n  over \n-the\n+a\n  laz\n';
    List<Patch> patches;
    patches = dmp.patch_fromText(strp);
    Expect.equals(strp, dmp.patch_toText(patches), 'patch_toText: Single.');
  
    strp = '@@ -1,9 +1,9 @@\n-f\n+F\n oo+fooba\n@@ -7,9 +7,9 @@\n obar\n-,\n+.\n  tes\n';
    patches = dmp.patch_fromText(strp);
    Expect.equals(strp, dmp.patch_toText(patches), 'patch_toText: Dual.');
  }
  
  void testPatchAddContext() {
  
negative.code:   text2 = '${text1}123';
    expectedPatch = '@@ -573,28 +573,31 @@\n cdefabcdefabcdefabcdefabcdef\n+123\n';
    patches = dmp.patch_make(text1, text2);
    expect(expectedPatch, dmp.patch_toText(patches), reason: 'patch_make: Long string with repeats.');
  
    // Test null inputs.
    Expect.throws(() => dmp.patch_make(null), null, 'patch_make: Null inputs.');
  