code: function(name, helperCall) {
                  this.aliases.functionType = '"function"';
                  this.aliases.helperMissing = 'helpers.helperMissing';
                  this.useRegister('helper');
  
                  var nonHelper = this.popStack();
  
                  this.emptyHash();
                  var helper = this.setupHelper(0, name, helperCall);
  
                  var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
  
                  this.push(
                          '((helper = (helper = ' + helperName + ' || ' + nonHelper + ') != null ? helper : helperMissing'
                          + (helper.paramsInit ? '),(' + helper.paramsInit : '') + '),'
                          + '(typeof helper === functionType ? helper.call(' + helper.callParams + ') : helper))');
              }
docs: [invokeAmbiguous]  On stack, before: hash, inverse, program, params..., ... On stack, after: result of disambiguation  This operation is used when an expression like `{{foo}}` is provided, but we don't know at compile-time whether it is a helper or a path.  This operation emits more code than the other options, and can be avoided by passing the `knownHelpers` and `knownHelpersOnly` flags at compile-time.