code: @Override
      public Packet getPacket(final Protocol p) throws IOException, PacketParseException {
          if (this.protocol == p) {
              return this;
          }
  
          final Packet child = getNextPacket();
          if (child != null && child.getProtocol() == p) {
              return child;
          }
  
          if (child == null) {
              return checkParent(p);
          }
  
          return child.getPacket(p);
      }
docs: /*
  (non-Javadoc)
  
  @see io.pkts.packet.Packet#getPacket(io.pkts.protocol.Protocol)