Class.Mutators.Tag = function (tagName) { Vn.customTags[tagName] = this; if (this.parent) { this.implement ({Parent: this.parent.Parent}); this.implement ({Child: this.parent.Child}); this.implement ({Properties: {}}); } this.extend ({Tag: tagName}); }; Class.Mutators.Properties = function (props) { var parentProps; for (var propName in props) { var prop = props[propName]; if (!prop.get && !prop.set && prop.writable === undefined) prop.writable = true; } if (this.parent && (parentProps = this.parent.Properties)) for (var propName in parentProps) props[propName] = parentProps[propName]; this.extend ({Properties: props}); Object.defineProperties (this.prototype, props); }; Class.Mutators.Parent = function (propName) { this.extend ({Parent: propName}); }; Class.Mutators.Child = function (propName) { this.extend ({Child: propName}); };