docs: public synchronized void addGeoQueryDataEventListener(final GeoQueryDataEventListener listener) {
          if (eventListeners.contains(listener)) {
              throw new IllegalArgumentException("Added the same listener twice to a GeoQuery!");
          }
          eventListeners.add(listener);
          if (this.queries == null) {
              this.setupQueries();
          } else {
              for (final Map.Entry<String, LocationInfo> entry: this.locationInfos.entrySet()) {
                  final String key = entry.getKey();
                  final LocationInfo info = entry.getValue();
  
                  if (info.inGeoQuery) {
                      this.geoFire.raiseEvent(new Runnable() {
                          @Override
                          public void run() {
                              listener.onDataEntered(info.dataSnapshot, info.location);
                          }
                      });
                  }
              }
              if (this.canFireReady()) {
                  this.geoFire.raiseEvent(new Runnable() {
                      @Override
                      public void run() {
                          listener.onGeoQueryReady();
                      }
                  });
              }
          }
      }