code: protected void patch_addContext(Patch patch, String text) {
          if (text.length() == 0) {
              return;
          }
          String pattern = text.substring(patch.start2, patch.start2
                  + patch.length1);
          int padding = 0;
  
          // Look for the first and last matches of pattern in text. If two
          // different
          // matches are found, increase the pattern length.
          while (text.indexOf(pattern) != text.lastIndexOf(pattern)
                  && pattern.length() < Match_MaxBits - Patch_Margin
                          - Patch_Margin) {
              padding += Patch_Margin;
              pattern = text.substring(
                      Math.max(0, patch.start2 - padding),
                      Math.min(text.length(), patch.start2 + patch.length1
                              + padding));
          }
          // Add one chunk for good luck.
          padding += Patch_Margin;
  
          // Add the prefix.
          String prefix = text.substring(Math.max(0, patch.start2 - padding),
                  patch.start2);
          if (prefix.length() != 0) {
              patch.diffs.addFirst(new Diff(Operation.EQUAL, prefix));
          }
          // Add the suffix.
          String suffix = text
                  .substring(
                          patch.start2 + patch.length1,
                          Math.min(text.length(), patch.start2 + patch.length1
                                  + padding));
          if (suffix.length() != 0) {
              patch.diffs.addLast(new Diff(Operation.EQUAL, suffix));
          }
  
          // Roll back the start points.
          patch.start1 -= prefix.length();
          patch.start2 -= prefix.length();
          // Extend the lengths.
          patch.length1 += prefix.length() + suffix.length();
          patch.length2 += prefix.length() + suffix.length();
      }
docs: Increase the context until it is unique, but don't let the pattern expand
  beyond Match_MaxBits.
  
  @param patch
  The patch to grow.
  @param text
  Source text.