docs: function updateOpts(isLoop, parent, isAnonymous, opts, instAttrs) {
        // isAnonymous `each` tags treat `dom` and `root` differently. In this case
        // (and only this case) we don't need to do updateOpts, because the regular parse
        // will update those attrs. Plus, isAnonymous tags don't need opts anyway
        if (isLoop && isAnonymous) { return }
        var ctx = isLoop ? inheritParentProps.call(this) : parent || this;
  
        each(instAttrs, function (attr) {
          if (attr.expr) { updateExpression.call(ctx, attr.expr); }
          // normalize the attribute names
          opts[toCamel(attr.name).replace(ATTRS_PREFIX, '')] = attr.expr ? attr.expr.value : attr.value;
        });
      }