docs: function render (vnode, parent, context) {
    // render
    var i = 0
    var rendered = rawRender(vnode)
  
    // mount
    if (typeof parent === 'function') {
      var nodes = rendered.nodes.length < 2 ? rendered.nodes[0] : rendered.nodes
      parent(nodes)
    } else if (parent) {
      for (i = 0; i < rendered.nodes.length; i++) {
        parent.appendChild(rendered.nodes[i])
      }
    }
  
    // dispatch callback refs and didmounts
    var mockComponent = { _collector: rendered } // for dispatch convenience
    dispatchRefs(mockComponent)
    dispatch(mockComponent, function (c) {
      c.mounted = true
      c.componentDidMount && c.componentDidMount(c.props)
    })
  
    // Add items to context
    if (context && context._collector) {
      var c = context._collector
      for (i = 0; i < rendered.components.length; i++) {
        rendered.components[i]._parent = context
      }
      if (c.refs) c.refs = c.refs.concat(rendered.refs)
      if (c.components) c.components = c.components.concat(rendered.components)
    }
  
    mockComponent = undefined
    return rendered
  }