code: function(name) {
        this.context.aliases.functionType = '"function"';
  
        this.pushStackLiteral('{}');
        var helper = this.setupHelper(0, name);
  
        var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
        this.register('foundHelper', helperName);
  
        var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
        var nextStack = this.nextStack();
  
        this.source.push('if (foundHelper) { ' + nextStack + ' = foundHelper.call(' + helper.callParams + '); }');
        this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '.apply(depth0) : ' + nextStack + '; }');
      }
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.