@Override
  @Nullable
  public Fragment getEarliestBunchInInterval(final long earliestRevision, final long oldestRevision, final int desirableSize,
                                             final boolean includeYoungest, final boolean includeOldest) {
    if ((earliestRevision > getEarliestRevision()) || (earliestRevision == -1)) {
      if (myAlreadyReaded == null) {
        return null;
      }
      // just return first
      return createFromLoaded(myAlreadyReaded, earliestRevision, oldestRevision, desirableSize, includeYoungest, includeOldest, false);
    }

      final ChangesBunch loadedBunch = myAlreadyReaded;

      final List<CommittedChangeList> list = loadedBunch.getList();
      if (list.isEmpty()) {
        return null;
      }
      final long oldest = list.get(list.size() - 1).getNumber();

      if ((! includeYoungest) && (oldest == earliestRevision)) {
        return packNext(earliestRevision, oldestRevision, desirableSize, includeOldest, loadedBunch.isConsistentWithPrevious());
      //} else if ((oldest <= earliestRevision) && (youngest >= earliestRevision)) {
      } else if (oldest <= earliestRevision) {
        return createFromLoaded(loadedBunch, earliestRevision, oldestRevision, desirableSize, includeYoungest, includeOldest, false);
      }

    return null;
  }
@Override
  @Nullable
  public Fragment getEarliestBunchInInterval(final long earliestRevision, final long oldestRevision, final int desirableSize,
                                             final boolean includeYoungest, final boolean includeOldest)