public Func <byte[], bool> OptionalFilter;             // verifies NPACK.NeighborHMAC, ignores invalid HMACs // returns false to ignore the processed response packet

        public bool Scan(DrpPeerEngine engine, byte[] udpData) // may throw parser exception
        {
            if (!MiscProcedures.EqualByteArrayHeader(ResponseFirstBytes, udpData, IgnoredByteAtOffset1))
            {
                if (engine.WriteToLog_udp_deepDetail_enabled)
                {
                    engine.WriteToLog_udp_deepDetail($"packet does not match to ResponseFirstBytes={MiscProcedures.ByteArrayToString(ResponseFirstBytes)} ({(PacketTypes)ResponseFirstBytes[0]}) udpData={MiscProcedures.ByteArrayToString(udpData)} ({(PacketTypes)udpData[0]})"
                                                     );
                }
                return(false);
            }
            if (OptionalFilter != null)
            {
                if (!OptionalFilter(udpData))
                {
                    //if (engine.WriteToLog_udp_deepDetail_enabled)
                    engine.WriteToLog_udp_lightPain($"packet did not pass OptionalFilter");
                    return(false);
                }
            }
            return(true);
        }