function traverse_symbol_ancestors (symbol, func, callback) {
      var update_metadata = this['$$SYMBOLS.scope_special.UPDATE_METADATA_BY_SYMBOL$$'][symbol];
      var instance_update_metadata = this['$$SYMBOLS.scope_special.INSTANCE_UPDATE_METADATA_BY_SYMBOL$$'][symbol];
      if (func) func(update_metadata, instance_update_metadata);

      if (update_metadata && update_metadata.is_scope_parameter &&
          instance_update_metadata && instance_update_metadata.forward_to) {
        var parent_scope = this.state['$$SYMBOLS.scope_special.PARENT_SCOPE$$'];
        var forward_to_rules = instance_update_metadata.forward_to;

        for (var i = 0; i < forward_to_rules.length; i++) {
          var rule = forward_to_rules[i];
          if (rule.scope === parent_scope) {
            return traverse_symbol_ancestors.call(rule.scope, rule.symbol, func, callback);
          }
        }
      }
      if (callback) {
        return callback(this, symbol, update_metadata, instance_update_metadata);
      }
    }
/**
     * @param {string} symbol
     * @param {function} [func] Code to execute on metadata of symbol and its ancestors
     * @param {function} [callback] Code to execute on root ancestor and its metadata
     * @returns The return value of 'callback'
     */
@param {string} symbol
@param {function} [func] Code to execute on metadata of symbol and its ancestors
@param {function} [callback] Code to execute on root ancestor and its metadata
@returns The return value of 'callback'
@param { string } symbol @param { function } [ func ] Code to execute on metadata of symbol and its ancestors @param { function } [ callback ] Code to execute on root ancestor and its metadata @returns The return value of ' callback '
function traverse_symbol_ancestors (symbol, func, callback) {
      var update_metadata = this['$$SYMBOLS.scope_special.UPDATE_METADATA_BY_SYMBOL$$'][symbol];
      var instance_update_metadata = this['$$SYMBOLS.scope_special.INSTANCE_UPDATE_METADATA_BY_SYMBOL$$'][symbol];
      if (func) func(update_metadata, instance_update_metadata);
      if (update_metadata && update_metadata.is_scope_parameter &&
          instance_update_metadata && instance_update_metadata.forward_to) {
        var parent_scope = this.state['$$SYMBOLS.scope_special.PARENT_SCOPE$$'];
        var forward_to_rules = instance_update_metadata.forward_to;
        for (var i = 0; i < forward_to_rules.length; i++) {
          var rule = forward_to_rules[i];
          if (rule.scope === parent_scope) {
            return traverse_symbol_ancestors.call(rule.scope, rule.symbol, func, callback);
          }
        }
      }
      if (callback) {
        return callback(this, symbol, update_metadata, instance_update_metadata);
      }
    }
function traverse_symbol_ancestors ( symbol , func , callback ) { var update_metadata = this [ '$$SYMBOLS.scope_special.UPDATE_METADATA_BY_SYMBOL$$' ] [ symbol ] ; var instance_update_metadata = this [ '$$SYMBOLS.scope_special.INSTANCE_UPDATE_METADATA_BY_SYMBOL$$' ] [ symbol ] ; if ( func ) func ( update_metadata , instance_update_metadata ) ; if ( update_metadata && update_metadata . is_scope_parameter && instance_update_metadata && instance_update_metadata . forward_to ) { var parent_scope = this . state [ '$$SYMBOLS.scope_special.PARENT_SCOPE$$' ] ; var forward_to_rules = instance_update_metadata . forward_to ; for ( var i = 0 ; i < forward_to_rules . length ; i ++ ) { var rule = forward_to_rules [ i ] ; if ( rule . scope === parent_scope ) { return traverse_symbol_ancestors . call ( rule . scope , rule . symbol , func , callback ) ; } } } if ( callback ) { return callback ( this , symbol , update_metadata , instance_update_metadata ) ; } }
@param {string} symbol
 @param {function} [func] Code to execute on metadata of symbol and its ancestors
 @param {function} [callback] Code to execute on root ancestor and its metadata
 @returns The return value of 'callback'
@param { string } symbol @param { function } [ func ] Code to execute on metadata of symbol and its ancestors @param { function } [ callback ] Code to execute on root ancestor and its metadata @returns The return value of ' callback '