whole_func_string: function(index) {
          var range = this._visibleRange(),
              dm    = this.metrics().rowDimensions(index),
              maxY  = dm.top + dm.height,
              minY  = dm.top;
  
          if (maxY >= range.to) {
              this.scrollableParent().scroll(0, maxY - range.to +
                  // hackish overflow to compensate for bottom scroll bar
                  (index === this.data().length - 1 ? 100 : 0)
              );
          } else if (minY < range.from) {
              this.scrollableParent().scroll(0, minY - range.from);
          }
          this._wrappedUpdate();
          return this;
      }
func_code_string: function(index) {
          var range = this._visibleRange(),
              dm    = this.metrics().rowDimensions(index),
              maxY  = dm.top + dm.height,
              minY  = dm.top;
  
          if (maxY >= range.to) {
              this.scrollableParent().scroll(0, maxY - range.to +
                  // hackish overflow to compensate for bottom scroll bar
                  (index === this.data().length - 1 ? 100 : 0)
              );
          } else if (minY < range.from) {
              this.scrollableParent().scroll(0, minY - range.from);
          }
          this._wrappedUpdate();
          return this;
      }
func_documentation_string: Scroll the parent so row at position gets into view