The SizedMarshaler and DeterministicMarshaler interfaces are just a copy of the protobuf interfaces and esp. the latter (XXX_Size,XXX_Marshal) makes no sense in isolation.
We should create our own interface and add wrappers for protobuf and other serialization formats.