code: @Synchronized
      public boolean isEndOfData() {
          return futureSegments.isEmpty() && unassignedSegments.isEmpty() &&
                  assignedSegments.values().stream().allMatch(Map::isEmpty);
      }
docs: This functions returns true if the readers part of reader group for sealed streams have completely read the data.
  
  @return true if end of data. false if there are segments to be read from.