class DefaultInboundPacket implements InboundPacket {

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj instanceof InboundPacket) {
            final DefaultInboundPacket other = (DefaultInboundPacket) obj;
            return Objects.equals(this.receivedFrom, other.receivedFrom) &&
                    Objects.equals(this.parsed, other.parsed) &&
                    Objects.equals(this.unparsed, other.unparsed);
        }
        return false;
    }

    public  DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed,
                                ByteBuffer unparsed);
    public  DefaultInboundPacket(ConnectPoint receivedFrom, Ethernet parsed,
            ByteBuffer unparsed, Optional<Long> cookie);

}