### Question:
PacketOutInputMessageFactory implements OFDeserializer<PacketOutInput>, DeserializerRegistryInjector { @Override public PacketOutInput deserialize(ByteBuf rawMessage) { PacketOutInputBuilder builder = new PacketOutInputBuilder(); builder.setVersion((short) EncodeConstants.OF13_VERSION_ID); builder.setXid(rawMessage.readUnsignedInt()); builder.setBufferId(rawMessage.readUnsignedInt()); builder.setInPort(new PortNumber(rawMessage.readUnsignedInt())); int actions_len = rawMessage.readShort(); rawMessage.skipBytes(PADDING); CodeKeyMaker keyMaker = CodeKeyMakerFactory.createActionsKeyMaker(EncodeConstants.OF13_VERSION_ID); List<Action> actions = ListDeserializer.deserializeList(EncodeConstants.OF13_VERSION_ID, actions_len, rawMessage, keyMaker, registry); builder.setAction(actions); byte[] data = new byte[rawMessage.readableBytes()]; rawMessage.readBytes(data); if (data != null) { builder.setData(data); } return builder.build(); }  @Override PacketOutInput deserialize(ByteBuf rawMessage); @Override void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry);  }### Answer:
@Test public void test() { ByteBuf bb = BufferHelper.buildBuffer( "00 00 01 00 00 00 01 00 00 28 00 00 00 00 00 00 00 11 00 08 00 19 00 00 00 12 00 08 00 00 00 00 00 12 " + "00 08 00 00 00 00 00 12 00 08 00 00 00 00 00 12 00 08 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 10 " + "11 12 13 14"); PacketOutInput deserializedMessage = BufferHelper.deserialize(factory, bb); BufferHelper.checkHeaderV13(deserializedMessage); Assert.assertEquals("Wrong buffer Id", 256L, deserializedMessage.getBufferId().longValue()); Assert.assertEquals("Wrong In Port", new PortNumber(256L), deserializedMessage.getInPort()); Assert.assertEquals("Wrong Numbers of actions", createAction(), deserializedMessage.getAction()); byte[] data = ByteBufUtils.hexStringToBytes("00 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14"); Assert.assertArrayEquals("Wrong data", data, deserializedMessage.getData()); }