private static synchronized void startMonitoring() {
    if (isMonitoring) {
      return;
    }

    synchronized (systems) {
      // Initialize our own list of distributed systems via a connect listener
      List existingSystems = InternalDistributedSystem
          .addConnectListener(InternalClientMembership::addInternalDistributedSystem);

      isMonitoring = true;

      // While still holding the lock on systems, add all currently known
      // systems to our own list
      for (final Object existingSystem : existingSystems) {
        InternalDistributedSystem sys = (InternalDistributedSystem) existingSystem;
        try {
          if (sys.isConnected()) {
            addInternalDistributedSystem(sys);
          }
        } catch (DistributedSystemDisconnectedException e) {
          // it doesn't care (bug 37379)
        }
      }

    } // synchronized
  }
This work used to be in a class initializer. Unfortunately, this allowed the class to escape
before it was fully initialized, so now we just make sure this work is done before any public
static method on it is invoked.
geode-core/src/main/java/org/apache/geode/internal/cache/tier/InternalClientMembership.java