if(pages != null) pages.add(nextPage_);
dataCache.add(nextPage_);
		public final int read() throws IOException {			if (pageLen_ < 0)				return -1;			if (offset_ == pageLen_) {				final long next = nextPage_.getPageHeader().getNextInChain();				if (next < 1) {					pageLen_ = -1;					offset_ = 0;					return -1;				}				try {					lock.acquire(Lock.READ_LOCK);					nextPage_ = (SinglePage) getDataPage(next);					pageLen_ = nextPage_.ph.getDataLength();					offset_ = 0;					if(pages != null)						pages.add(nextPage_);				} catch (LockException e) {					throw new IOException(						"failed to acquire a read lock on " + getFile().getName());				} finally {					lock.release();				}			}			return (int) (nextPage_.data[offset_++] & 0xFF);		}