If you need some serialization code which is specific for certain Handler
implementations, my first choice would be to make it part of the type itself and hence put into the same module where the specific Handler lives, so either core
or extension
.
If the code is separable from the Handler type, and you have the impression core
and extension
become so large it gets confusing, you may introduce two new modules coreSerializers
and extensionSerializers
.
Generic serialization code like HandlerSerializer<T: Handler>
, however, can be placed in a neutral location, since it does not create a dependency on specific handler implementation. It could by either placed in persistence
or in some new module serialization
, whatever you prefer.