docs: private JSONObject processJSONResponse(MessagingChannel messagingChannel,
                                              Set<String> activeVersions,
                                              boolean checkVersion) throws IOException, JSONException
      {
          // read the json response from socketjoiner with version info
          JSONObject jsonResponse = readJSONObjFromWire(messagingChannel);
          if (!checkVersion) {
              return jsonResponse;
          }
  
          VersionChecker versionChecker = m_acceptor.getVersionChecker();
          String remoteVersionString = jsonResponse.getString(VERSION_STRING);
          String remoteBuildString = jsonResponse.getString(BUILD_STRING);
          boolean remoteAcceptsLocalVersion = jsonResponse.getBoolean(VERSION_COMPATIBLE);
          if (remoteVersionString.equals(versionChecker.getVersionString())) {
              if (!versionChecker.getBuildString().equals(remoteBuildString)) {
                  // ignore test/eclipse build string so tests still work
                  if (!versionChecker.getBuildString().equals("VoltDB") && !remoteBuildString.equals("VoltDB")) {
                      org.voltdb.VoltDB.crashLocalVoltDB("For VoltDB version " + versionChecker.getVersionString() +
                              " git tag/hash is not identical across the cluster. Node join failed.\n" +
                              "  joining build string:  " + versionChecker.getBuildString() + "\n" +
                              "  existing build string: " + remoteBuildString, false, null);
                      return null;
                  }
              }
          }
          else if (!remoteAcceptsLocalVersion) {
              if (!versionChecker.isCompatibleVersionString(remoteVersionString)) {
                  org.voltdb.VoltDB.crashLocalVoltDB("Cluster contains nodes running VoltDB version " + remoteVersionString +
                          " which is incompatibile with local version " + versionChecker.getVersionString() +
                          ".\n", false, null);
                  return null;
              }
          }
          //Do this only after we think we are compatible.
          activeVersions.add(remoteVersionString);
          return jsonResponse;
      }