code: @Nullable
      private Beacon trackGattBeacon(@NonNull Beacon beacon) {
          if (beacon.isExtraBeaconData()) {
              updateTrackedBeacons(beacon);
              return null;
          }
  
          String key = getBeaconKey(beacon);
          HashMap<Integer,Beacon> matchingTrackedBeacons = mBeaconsByKey.get(key);
          if (null == matchingTrackedBeacons) {
              matchingTrackedBeacons = new HashMap<>();
          }
          else {
              Beacon trackedBeacon = matchingTrackedBeacons.values().iterator().next();
              beacon.setExtraDataFields(trackedBeacon.getExtraDataFields());
          }
          matchingTrackedBeacons.put(beacon.hashCode(), beacon);
          mBeaconsByKey.put(key, matchingTrackedBeacons);
  
          return beacon;
      }
docs: The following code is for dealing with merging data fields in beacons