code: function block(morph, env, scope, path, params, hash, template, inverse, visitor) {
      if (handleRedirect(morph, env, scope, path, params, hash, template, inverse, visitor)) {
        return;
      }
  
      continueBlock(morph, env, scope, path, params, hash, template, inverse, visitor);
    }
docs: Host Hook: block
  
  @param {RenderNode} renderNode
  @param {Environment} env
  @param {Scope} scope
  @param {String} path
  @param {Array} params
  @param {Object} hash
  @param {Block} block
  @param {Block} elseBlock
  
  Corresponds to:
  
  ```hbs
  {{#helper param1 param2 key1=val1 key2=val2}}
  {{!-- child template --}}
  {{/helper}}
  ```
  
  This host hook is a workhorse of the system. It is invoked
  whenever a block is encountered, and is responsible for
  resolving the helper to call, and then invoke it.
  
  The helper should be invoked with:
  
  - `{Array} params`: the parameters passed to the helper
  in the template.
  - `{Object} hash`: an object containing the keys and values passed
  in the hash position in the template.
  
  The values in `params` and `hash` will already be resolved
  through a previous call to the `get` host hook.
  
  The helper should be invoked with a `this` value that is
  an object with one field:
  
  `{Function} yield`: when invoked, this function executes the
  block with the current scope. It takes an optional array of
  block parameters. If block parameters are supplied, HTMLBars
  will invoke the `bindLocal` host hook to bind the supplied
  values to the block arguments provided by the template.
  
  In general, the default implementation of `block` should work
  for most host environments. It delegates to other host hooks
  where appropriate, and properly invokes the helper with the
  appropriate arguments.