def METHOD_NAME(self):
    """
    First header: Packet length 4, packet num 0
    Second header: Packet 2, packet num 1
    Third header: Invalid (CRC does not check) (would be len 4, num 2)
    """
    encoded_headers = (
        #   | Number of bytes                    | Packet number                      | CRC
        0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1,
        0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1,
        0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1
    )
    packet_len_tagname = "packet_len"
    random_tag = gr.tag_t()
    random_tag.offset = 5
    random_tag.key = pmt.string_to_symbol("foo")
    random_tag.value = pmt.from_long(42)
    src = blocks.vector_source_b(encoded_headers, tags=(random_tag,))
    parser = digital.packet_headerparser_b(32, packet_len_tagname)
    sink = blocks.message_debug()
    self.tb.connect(src, parser)
    self.tb.msg_connect(parser, "header_data", sink, "store")
    self.tb.start()
    self.waitFor(lambda: sink.num_messages() == 3)
    self.tb.stop()
    self.tb.wait()
    self.assertEqual(sink.num_messages(), 3)
    msg1 = pmt.to_python(sink.get_message(0))
    msg2 = pmt.to_python(sink.get_message(1))
    msg3 = pmt.to_python(sink.get_message(2))
    self.assertEqual(msg1, {'packet_len': 4, 'packet_num': 0, 'foo': 42})
    self.assertEqual(msg2, {'packet_len': 2, 'packet_num': 1})
    self.assertEqual(msg3, False)