Packet*Layer code should be moved to a separate package, parser.
Likewise, CommunicationContext and schema-related code should also go in the same package, as parser highly depends on it.
Additionally, DefaultPacketReader/Writer also need to be moved to the same package. In the end, this means that default datamodel handlers should be implemented in peer, but alternatively they could still remain in the DefaultPacketReader.
Ultimately, this should make the parser completely independent of the peer.
Packet*Layer code should be moved to a separate package, parser. Likewise, CommunicationContext and schema-related code should also go in the same package, as parser highly depends on it. Additionally, DefaultPacketReader/Writer also need to be moved to the same package. In the end, this means that default datamodel handlers should be implemented in peer, but alternatively they could still remain in the DefaultPacketReader.
Ultimately, this should make the parser completely independent of the peer.