@Override
 public int size() {
   int rowsLeft = container.size() - startIndex;
   if (rowsLeft > pageLength) {
     return pageLength;
   } else {
     return rowsLeft;
   }
 }
 @Override
 public Collection<?> getItemIds() {
   return container.getItemIds();
 }
 @Override
 public Collection<?> getContainerPropertyIds() {
   return container.getContainerPropertyIds();
 }
 @Override
 public Item getItem(Object itemId) {
   return container.getItem(itemId);
 }
 public Object getIdByIndex(int index) {
   return container.getIdByIndex(index + startIndex);
 }
 public Object prevItemId(Object itemId) {
   return container.prevItemId(itemId);
 }
 @Override
 public Object addItem() throws UnsupportedOperationException {
   return container.addItem();
 }
 @Override
 public boolean containsId(Object itemId) {
   return container.containsId(itemId);
 }
 public Object addItemAt(int index) throws UnsupportedOperationException {
   return container.addItemAt(index);
 }
 public int indexOfId(Object itemId) {
   return container.indexOfId(itemId);
 }
 public Item addItemAfter(Object previousItemId, Object newItemId)
     throws UnsupportedOperationException {
   return container.addItemAfter(previousItemId, newItemId);
 }
 public boolean isLastId(Object itemId) {
   return container.isLastId(itemId);
 }
 public Object lastItemId() {
   return container.lastItemId();
 }
 public Object firstItemId() {
   return container.firstItemId();
 }
 @Override
 public Property getContainerProperty(Object itemId, Object propertyId) {
   return container.getContainerProperty(itemId, propertyId);
 }
 @Override
 public Class<?> getType(Object propertyId) {
   return container.getType(propertyId);
 }
 public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException {
   return container.addItemAt(index, newItemId);
 }
 @Override
 public Item addItem(Object itemId) throws UnsupportedOperationException {
   return container.addItem(itemId);
 }
 public int getRealSize() {
   return container.size();
 }
 @Override
 public boolean removeItem(Object itemId) throws UnsupportedOperationException {
   return container.removeItem(itemId);
 }
 public Object nextItemId(Object itemId) {
   return container.nextItemId(itemId);
 }