@Nullable
    public synchronized Beacon track(@NonNull Beacon beacon) {
        Beacon trackedBeacon = null;
        if (beacon.isMultiFrameBeacon() || beacon.getServiceUuid() != -1) {
            trackedBeacon = trackGattBeacon(beacon);
        }
        else {
            trackedBeacon = beacon;
        }
        return trackedBeacon;
    }
@Test
    public void gattBeaconFieldsGetUpdated() {
        Beacon beacon = getGattBeacon();
        Beacon extraDataBeacon = getGattBeaconExtraData();
        Beacon repeatBeacon = getGattBeacon();
        repeatBeacon.setRssi(-100);
        ExtraDataBeaconTracker tracker = new ExtraDataBeaconTracker();
        tracker.track(beacon);
        tracker.track(extraDataBeacon);
        Beacon trackedBeacon = tracker.track(repeatBeacon);
        assertEquals("rssi should NOT be updated", -100, trackedBeacon.getRssi());
        assertEquals("extra data fields should be updated", extraDataBeacon.getDataFields(), trackedBeacon.getExtraDataFields());
    }