// handle peer discovered by PeerGroup
 protected InboundMessageQueuer handleConnectToPeer(int id, VersionMessage versionMessage)
     throws Exception {
   InboundMessageQueuer writeTarget = newPeerWriteTargetQueue.take();
   checkArgument(versionMessage.hasBlockChain());
   // Complete handshake with the peer - send/receive version(ack)s, receive bloom filter
   writeTarget.sendMessage(versionMessage);
   writeTarget.sendMessage(new VersionAck());
   stepThroughInit(versionMessage, writeTarget);
   return writeTarget;
 }
 protected InboundMessageQueuer connectPeer(int id, VersionMessage versionMessage)
     throws Exception {
   checkArgument(versionMessage.hasBlockChain());
   InboundMessageQueuer writeTarget = connectPeerWithoutVersionExchange(id);
   // Complete handshake with the peer - send/receive version(ack)s, receive bloom filter
   writeTarget.sendMessage(versionMessage);
   writeTarget.sendMessage(new VersionAck());
   stepThroughInit(versionMessage, writeTarget);
   return writeTarget;
 }