public synchronized Collection<IBeacon> getIBeacons() {
   ArrayList<IBeacon> iBeacons = new ArrayList<IBeacon>();
   Iterator<RangedIBeacon> iterator = rangedIBeacons.values().iterator();
   while (iterator.hasNext()) {
     RangedIBeacon rangedIBeacon = iterator.next();
     if (!rangedIBeacon.allMeasurementsExpired()) {
       iBeacons.add(rangedIBeacon);
     }
   }
   return iBeacons;
 }
 public void addIBeacon(IBeacon iBeacon) {
   if (rangedIBeacons.containsKey(iBeacon)) {
     RangedIBeacon rangedIBeacon = rangedIBeacons.get(iBeacon);
     Log.d(
         TAG,
         "adding "
             + iBeacon.getProximityUuid()
             + " to existing range for: "
             + rangedIBeacon.getProximityUuid());
     rangedIBeacon.addRangeMeasurement(iBeacon.getRssi());
   } else {
     Log.d(TAG, "adding " + iBeacon.getProximityUuid() + " to new rangedIBeacon");
     rangedIBeacons.put(iBeacon, new RangedIBeacon(iBeacon));
   }
 }