public virtual ByteString EncodePdu(IAkkaPdu pdu)
{
ByteString finalBytes = null;
pdu.Match()
.With<Associate>(a => finalBytes = ConstructAssociate(a.Info))
.With<Payload>(p => finalBytes = ConstructPayload(p.Bytes))
.With<Disassociate>(d => finalBytes = ConstructDisassociate(d.Reason))
.With<Heartbeat>(h => finalBytes = ConstructHeartbeat());
return finalBytes;
}