docs: void put(Modification mod) {
        switch (mod.getType()) {
           case STORE:
              modifications.put(((Store) mod).getKey(), mod);
              break;
           case REMOVE:
              modifications.put(((Remove) mod).getKey(), mod);
              break;
           case LIST:
              for (Modification m : ((ModificationsList) mod).getList())
                 put(m);
              break;
           default:
              throw new IllegalArgumentException("Unknown modification type " + mod.getType());
        }
     }