draw(context, viewRefs) {
    const {
      subviews,
      visibleArea
    } = this;
    subviews.forEach(subview => {
      if (rectIntersectsRect(visibleArea, subview.visibleArea)) {
        subview.displayIfNeeded(context, viewRefs);
      }
    });
    const backgroundColor = this._backgroundColor;

    if (backgroundColor !== null) {
      const desiredSize = this.desiredSize();

      if (visibleArea.size.height > desiredSize.height) {
        context.fillStyle = backgroundColor;
        context.fillRect(visibleArea.origin.x, visibleArea.origin.y + desiredSize.height, visibleArea.size.width, visibleArea.size.height - desiredSize.height);
      }
    }
  }
Draw the contents of this view in the given canvas `context`.

Defaults to drawing this view's `subviews`.

To be overwritten by subclasses that wish to draw custom content.

NOTE: Do not call directly! Use `displayIfNeeded`.

@see displayIfNeeded