void Processstuff(byte[] message)
        {
            BinaryReader           br      = new BinaryReader(new MemoryStream(message));
            ClusteredSickMessageID msgID   = (ClusteredSickMessageID)br.ReadInt32();
            int                seq         = (br.ReadInt32());
            double             time        = br.ReadDouble();
            List <SickCluster> clusters    = new List <SickCluster>();
            int                numclusters = br.ReadInt32();

            for (int i = 0; i < numclusters; i++)
            {
                SickCluster cluster = new SickCluster();
                cluster.stable        = br.ReadBoolean();
                cluster.leftOccluded  = br.ReadBoolean();
                cluster.rightOccluded = br.ReadBoolean();
                int numpoints = br.ReadInt32();
                if (numpoints != 0)
                {
                    cluster.points = new List <SickXYPoint>(numpoints);
                }
                for (int j = 0; j < numpoints; j++)
                {
                    double      x  = br.ReadDouble();
                    double      y  = br.ReadDouble();
                    SickXYPoint pt = new SickXYPoint(x, y);
                    cluster.points.Add(pt);
                }
                clusters.Add(cluster);
            }
            if (br.BaseStream.Position != br.BaseStream.Length)
            {
                Console.WriteLine("Incomplete read of rear sick clusters.");
            }
            if (GotPacket != null)
            {
                GotPacket(this, new ClusteredSickEventArgs(time, clusters));
            }
        }
        void Processstuff(byte[] message)
        {
            BinaryReader br = new BinaryReader(new MemoryStream(message));
            ClusteredSickMessageID msgID = (ClusteredSickMessageID)br.ReadInt32();
            int seq = (br.ReadInt32());
            double time = br.ReadDouble();
            List<SickCluster> clusters = new List<SickCluster>();
            int numclusters = br.ReadInt32();

            for (int i = 0; i < numclusters; i++)
            {
                SickCluster cluster = new SickCluster();
                cluster.stable = br.ReadBoolean();
                cluster.leftOccluded = br.ReadBoolean();
                cluster.rightOccluded = br.ReadBoolean();
                int numpoints = br.ReadInt32();
                if (numpoints !=0)
                cluster.points = new List<SickXYPoint>(numpoints);
                for (int j = 0; j < numpoints; j++)
                {
                    double x = br.ReadDouble();
                    double y = br.ReadDouble();
                    SickXYPoint pt = new SickXYPoint(x,y);
                    cluster.points.Add(pt);
                }
                clusters.Add(cluster);
            }
            if (br.BaseStream.Position != br.BaseStream.Length)
                Console.WriteLine("Incomplete read of rear sick clusters.");
            if (GotPacket != null)
                GotPacket(this, new ClusteredSickEventArgs(time,clusters));
        }