private synchronized void handleElectionResultMessage(L2StateMessage msg) throws GroupException {
   if (activeNode.equals(msg.getEnrollment().getNodeID())) {
     Assert.assertFalse(ServerID.NULL_ID.equals(activeNode));
     // This wouldn't normally happen, but we agree - so ack
     GroupMessage resultAgreed =
         L2StateMessage.createResultAgreedMessage(msg, msg.getEnrollment());
     logger.info("Agreed with Election Result from " + msg.messageFrom() + " : " + resultAgreed);
     groupManager.sendTo(msg.messageFrom(), resultAgreed);
   } else if (state == ACTIVE_COORDINATOR
       || !activeNode.isNull()
       || (msg.getEnrollment().isANewCandidate() && state != START_STATE)) {
     // Condition 1 :
     // Obviously an issue.
     // Condition 2 :
     // This shouldn't happen normally, but is possible when there is some weird network error
     // where A sees B,
     // B sees A/C and C sees B and A is active and C is trying to run election
     // Force other node to rerun election so that we can abort
     // Condition 3 :
     // We don't want new L2s to win an election when there are old L2s in PASSIVE states.
     GroupMessage resultConflict =
         L2StateMessage.createResultConflictMessage(
             msg, EnrollmentFactory.createTrumpEnrollment(getLocalNodeID(), weightsFactory));
     warn(
         "WARNING :: Active Node = "
             + activeNode
             + " , "
             + state
             + " received ELECTION_RESULT message from another node : "
             + msg
             + " : Forcing re-election "
             + resultConflict);
     groupManager.sendTo(msg.messageFrom(), resultConflict);
   } else {
     debugInfo("ElectionMgr handling election result msg: " + msg);
     electionMgr.handleElectionResultMessage(msg);
   }
 }