code: function(name, helperCall) {
      this.useRegister('helper');
  
      let nonHelper = this.popStack();
  
      this.emptyHash();
      let helper = this.setupHelper(0, name, helperCall);
  
      let helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
  
      let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
      if (!this.options.strict) {
        lookup[0] = '(helper = ';
        lookup.push(
          ' != null ? helper : ',
          this.aliasable('helpers.helperMissing')
        );
      }
  
      this.push([
          '(', lookup,
          (helper.paramsInit ? ['),(', helper.paramsInit] : []), '),',
          '(typeof helper === ', this.aliasable('"function"'), ' ? ',
          this.source.functionCall('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.