final int version = ByteBufUtils.readVarInt(buffer);
final String address = ByteBufUtils.readUTF8(buffer);
final int port = buffer.readUnsignedShort();
final int state = ByteBufUtils.readVarInt(buffer);
return new HandshakeMessage(version, address, port, state);
}