code: public long setPosition(long position) {
  		BitStreams.checkPosition(position);
  		if (position != this.position) {
  			// is this necessary? preferable? position = Math.min(position, size);
  			long index = seekByte(position >> 3);
  			if (index < 0L) { // seeking not supported - skip whole distance
  				long count = position - this.position;
  				if (count > 0L) skipBits(count);
  			} else { // seeking is supported - skip remaining distance
  				this.position = index << 3;
  				skipBits(position - this.position);
  			}
  		}
  		return this.position;
  	}
docs: public methods