docs: static <K, V, T, R> void writeTo(ObjectOutput output, Mutation<K, V, R> mutation) throws IOException {
        BaseMutation bm = (BaseMutation) mutation;
        DataConversion.writeTo(output, bm.keyDataConversion);
        DataConversion.writeTo(output, bm.valueDataConversion);
        byte type = mutation.type();
        output.writeByte(type);
        switch (type) {
           case ReadWrite.TYPE:
              output.writeObject(((ReadWrite<K, V, ?>) mutation).f);
              break;
           case ReadWriteWithValue.TYPE:
              ReadWriteWithValue<K, V, T, R> rwwv = (ReadWriteWithValue<K, V, T, R>) mutation;
              output.writeObject(rwwv.argument);
              output.writeObject(rwwv.f);
              break;
           case Write.TYPE:
              output.writeObject(((Write<K, V>) mutation).f);
              break;
           case WriteWithValue.TYPE:
              WriteWithValue<K, V, T> wwv = (WriteWithValue<K, V, T>) mutation;
              output.writeObject(wwv.argument);
              output.writeObject(wwv.f);
              break;
        }
     }