code: public ListenableFuture<ChangeRequestsSnapshot<DataSegmentChangeRequest>> getSegmentChangesSince(ChangeRequestHistory.Counter counter)
    {
      if (counter.getCounter() < 0) {
        synchronized (lock) {
          Iterable<DataSegmentChangeRequest> segments = Iterables.transform(
              segmentLookup.keySet(),
              new Function<DataSegment, DataSegmentChangeRequest>()
              {
                @Nullable
                @Override
                public SegmentChangeRequestLoad apply(DataSegment input)
                {
                  return new SegmentChangeRequestLoad(input);
                }
              }
          );
  
          SettableFuture<ChangeRequestsSnapshot<DataSegmentChangeRequest>> future = SettableFuture.create();
          future.set(ChangeRequestsSnapshot.success(changes.getLastCounter(), Lists.newArrayList(segments)));
          return future;
        }
      } else {
        return changes.getRequestsSince(counter);
      }
    }
docs: Returns Future that lists the segment load/drop requests since given counter.