public override long ReadLong() { CheckAvaliable(SIZE_LONG); int blockAvailable = _currentBlock.Available(); long result; if (blockAvailable > SIZE_LONG) { result = _currentBlock.ReadLongLE(); } else { DataInputBlock nextBlock = GetDataInputBlock(_current_offset + blockAvailable); if (blockAvailable == SIZE_LONG) { result = _currentBlock.ReadLongLE(); } else { result = nextBlock.ReadLongLE(_currentBlock, blockAvailable); } _currentBlock = nextBlock; } _current_offset += SIZE_LONG; return(result); }