Protocol codecs that helps you to implement even more complex protocols by splitting a codec into multiple sub-codecs.