docs: public static void main(String[] args) {
      CollectionValuedMap<Integer, Integer> originalMap = new CollectionValuedMap<Integer, Integer>();
      /*
          for (int i=0; i<4; i++) {
            for (int j=0; j<4; j++) {
              originalMap.add(new Integer(i), new Integer(j));
            }
          }
          originalMap.remove(new Integer(2));
          System.out.println("Map: ");
          System.out.println(originalMap);
          System.exit(0);
      */
      Random r = new Random();
      for (int i = 0; i < 800; i++) {
        Integer rInt1 = Integer.valueOf(r.nextInt(400));
        Integer rInt2 = Integer.valueOf(r.nextInt(400));
        originalMap.add(rInt1, rInt2);
        System.out.println("Adding " + rInt1 + ' ' + rInt2);
      }
      CollectionValuedMap<Integer, Integer> originalCopyMap = new CollectionValuedMap<Integer, Integer>(originalMap);
      CollectionValuedMap<Integer, Integer> deltaCopyMap = new CollectionValuedMap<Integer, Integer>(originalMap);
      CollectionValuedMap<Integer, Integer> deltaMap = new DeltaCollectionValuedMap<Integer, Integer>(originalMap);
      // now make a lot of changes to deltaMap;
      // add and change some stuff
      for (int i = 0; i < 400; i++) {
        Integer rInt1 = Integer.valueOf(r.nextInt(400));
        Integer rInt2 = Integer.valueOf(r.nextInt(400) + 1000);
        deltaMap.add(rInt1, rInt2);
        deltaCopyMap.add(rInt1, rInt2);
        System.out.println("Adding " + rInt1 + ' ' + rInt2);
      }
      // remove some stuff
      for (int i = 0; i < 400; i++) {
        Integer rInt1 = Integer.valueOf(r.nextInt(1400));
        Integer rInt2 = Integer.valueOf(r.nextInt(1400));
        deltaMap.removeMapping(rInt1, rInt2);
        deltaCopyMap.removeMapping(rInt1, rInt2);
        System.out.println("Removing " + rInt1 + ' ' + rInt2);
      }
      System.out.println("original: " + originalMap);
      System.out.println("copy: " + deltaCopyMap);
      System.out.println("delta: " + deltaMap);
  
      System.out.println("Original preserved? " + originalCopyMap.equals(originalMap));
      System.out.println("Delta accurate? " + deltaMap.equals(deltaCopyMap));
    }