@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 multiFrameBeaconProgramaticParserAssociationDifferentServiceUUIDFieldsGetUpdated() {
        Beacon beacon = getMultiFrameBeacon();
        Beacon beaconUpdate = getMultiFrameBeaconUpdateDifferentServiceUUID();
        ExtraDataBeaconTracker tracker = new ExtraDataBeaconTracker(false);
        tracker.track(beacon);
        tracker.track(beaconUpdate);
        Beacon trackedBeacon = tracker.track(beacon);
        assertEquals("rssi should be updated", beaconUpdate.getRssi(), trackedBeacon.getRssi());
        assertEquals("data fields should be updated", beaconUpdate.getDataFields(), trackedBeacon.getExtraDataFields());
    }