docs: function RangeReader(options) {
          RangeReader.__super__.constructor.call(this);
          this.begin = options.begin;
          this.end = options.end;
          this.marker = null;
          this.limit = options.limit;
          this.reverse = options.reverse;
          this.streamingMode = options.streamingMode;
          this.nonTransactional = options.nonTransactional || false;
          this.snapshot = options.snapshot || false;
          debug(function(writer) {
            if (options.begin) {
              writer.buffer('begin', resolveKey(options.begin).toString('utf8'));
            }
            if (options.end) {
              writer.buffer('end', resolveKey(options.end).toString('utf8'));
            }
            writer.buffer('limit', options.limit);
            writer.buffer('reverse', options.reverse);
            writer.buffer('streamingMode', options.streamingMode);
            writer.buffer('nonTransactional', options.nonTransactional);
            return writer.buffer('snapshot', options.snapshot);
          });
          this.on('data', (function(_this) {
            return function(data) {
              var kv, _i, _len;
              if (data instanceof Array) {
                for (_i = 0, _len = data.length; _i < _len; _i++) {
                  kv = data[_i];
                  _this.marker = kv.key;
                }
              } else {
                _this.marker = data.key;
              }
            };
          })(this));
        }