docs: def collect_impl(self):
          """
          emits change instances based on the delta of the two distribution
          directories
          """
  
          ld = self.ldata
          rd = self.rdata
          deep = not self.shallow
  
          for event, entry in compare(ld, rd):
              if deep and fnmatches(entry, *JAR_PATTERNS):
                  if event == LEFT:
                      yield DistJarRemoved(ld, rd, entry)
                  elif event == RIGHT:
                      yield DistJarAdded(ld, rd, entry)
                  elif event == DIFF:
                      yield DistJarChange(ld, rd, entry, True)
                  elif event == SAME:
                      yield DistJarChange(ld, rd, entry, False)
  
              elif deep and fnmatches(entry, "*.class"):
                  if event == LEFT:
                      yield DistClassRemoved(ld, rd, entry)
                  elif event == RIGHT:
                      yield DistClassAdded(ld, rd, entry)
                  elif event == DIFF:
                      yield DistClassChange(ld, rd, entry, True)
                  elif event == SAME:
                      yield DistClassChange(ld, rd, entry, False)
  
              elif deep and fnmatches(entry, *TEXT_PATTERNS):
                  if event == LEFT:
                      yield DistContentRemoved(ld, rd, entry)
                  elif event == RIGHT:
                      yield DistContentAdded(ld, rd, entry)
                  elif event == DIFF:
                      yield DistTextChange(ld, rd, entry)
                  elif event == SAME:
                      yield DistTextChange(ld, rd, entry, False)
  
              elif deep and fnmatches(entry, "*/MANIFEST.MF"):
                  if event == LEFT:
                      yield DistContentRemoved(ld, rd, entry)
                  elif event == RIGHT:
                      yield DistContentAdded(ld, rd, entry)
                  elif event == DIFF:
                      yield DistManifestChange(ld, rd, entry, True)
                  elif event == SAME:
                      yield DistManifestChange(ld, rd, entry, False)
  
              else:
                  if event == LEFT:
                      yield DistContentRemoved(ld, rd, entry)
                  elif event == RIGHT:
                      yield DistContentAdded(ld, rd, entry)
                  elif event == DIFF:
                      yield DistContentChange(ld, rd, entry, True)
                  elif event == SAME:
                      yield DistContentChange(ld, rd, entry, False)