public void Receive(Message.Message message)
 {
     var messageKey = message.Key(0);
     IDictionary<Number640, Data> dataMap;
     if (message.DataMap(0) != null)
     {
         dataMap = message.DataMap(0).BackingDataMap;
     }
     else
     {
         dataMap = null;
     }
     int hopCount = message.IntAt(0);
     if (TwiceSeen(messageKey))
     {
         return;
     }
     Logger.Debug("Got broadcast map {0} from {1}.", dataMap, _peer.PeerId);
     lock (DebugCounter)
     {
         DebugCounter.Add(_peer.PeerId);
     }
     if (hopCount < MaxHopCount)
     {
         if (hopCount == 0)
         {
             FirstPeer(messageKey, dataMap, hopCount, message.IsUdp);
         }
         else
         {
             OtherPeer(messageKey, dataMap, hopCount, message.IsUdp);
         }
     }
 }