diff --git a/packages/monster/source/dom/attributes.js b/packages/monster/source/dom/attributes.js
index caf1c9821bca95f601b52e4a602aa3eb902a6efc..dbd667442bafd65a444be5dd81f251c912a919cd 100644
--- a/packages/monster/source/dom/attributes.js
+++ b/packages/monster/source/dom/attributes.js
@@ -4,9 +4,40 @@
  * @author schukai GmbH
  */
 
+import {isSymbol} from "../../test/web/tests.js";
 import {Monster} from '../namespace.js';
 import {TokenList} from "../types/tokenlist.js";
-import {validateInstance, validateString} from "../types/validate.js";
+import {validateInstance, validatePrimitive, validateString} from "../types/validate.js";
+import {ATTRIBUTE_OBJECTLINK} from "./constants.js";
+
+
+function addObjectLink(element, symbol, object) {
+
+    if (element?.[symbol] === undefined) {
+        element[symbol] = new Set;
+    }
+
+    addAttributeToken(ATTRIBUTE_OBJECTLINK, symbol.toString());
+    element[symbol].add(object);
+    return element;
+
+}
+
+function removeObjectLink(element, symbol) {
+
+    validateInstance(element, HTMLElement);
+    validatePrimitive(symbol)
+    validateString(key)    
+    
+    if (this.element?.[symbol] === undefined) {
+        return element
+    }
+
+    removeAttributeToken(ATTRIBUTE_OBJECTLINK, symbol.toString());
+    delete this.element[symbol];
+    return element;
+    
+}
 
 
 /**
diff --git a/packages/monster/source/dom/constants.js b/packages/monster/source/dom/constants.js
index 9121fecf6df3184c0d1be036f32d11746529a67e..891ac5b23b9b63686dff9d81f8f071edfabea4a3 100644
--- a/packages/monster/source/dom/constants.js
+++ b/packages/monster/source/dom/constants.js
@@ -88,7 +88,7 @@ const ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_PREFIX + 'bind';
  * @type {string}
  * @since 1.9.0
  */
-const ATTRIBUTE_UPDATER_HASSYMBOL = ATTRIBUTE_PREFIX + 'hassymbol';
+const ATTRIBUTE_OBJECTLINK = ATTRIBUTE_PREFIX + 'objectlink';
 
 
 export {
@@ -104,5 +104,5 @@ export {
     ATTRIBUTE_UPDATER_INSERT_REFERENCE,
     ATTRIBUTE_UPDATER_REMOVE,
     ATTRIBUTE_UPDATER_BIND,
-    ATTRIBUTE_UPDATER_HASSYMBOL
+    ATTRIBUTE_OBJECTLINK
 }
\ No newline at end of file
diff --git a/packages/monster/source/dom/updater.js b/packages/monster/source/dom/updater.js
index 05f9a7f1ff945194d4d290b783346e122c83b964..d2ccb0553410f428e02938c1186394591fcb2567 100644
--- a/packages/monster/source/dom/updater.js
+++ b/packages/monster/source/dom/updater.js
@@ -18,6 +18,7 @@ import {
     ATTRIBUTE_UPDATER_BIND,
     ATTRIBUTE_UPDATER_HASSYMBOL
 } from "../dom/constants.js";
+import {addAttributeToken, removeAttributeToken} from "./attributes.js";
 import {getDocument} from "./util.js";
 
 /**
@@ -107,13 +108,7 @@ class Updater extends Base {
          */
         this.element = validateInstance(element, HTMLElement);
 
-
-        if (this.element?.[symbol] === undefined) {
-            this.element[symbol] = new Set;
-        }
-
-        this.element[symbol].add(this);
-        this.element.setAttribute(ATTRIBUTE_UPDATER_HASSYMBOL,symbol.toString());
+        addReference.call(this);
 
         if (subject === undefined) subject = {}
         if (!isInstance(subject, ProxyObserver)) {
@@ -221,6 +216,7 @@ class Updater extends Base {
 
 }
 
+
 /**
  * @private
  * @param event
diff --git a/packages/monster/source/types/is.js b/packages/monster/source/types/is.js
index a1c2fb954210269b6f3986ce2239dc2f63442e8f..fba62de227d3c0ef6857c6f21a57b1024ce3ac74 100644
--- a/packages/monster/source/types/is.js
+++ b/packages/monster/source/types/is.js
@@ -89,6 +89,39 @@ function isPrimitive(value) {
     return false;
 }
 
+/**
+ * Checks whether the value passed is a symbol
+ *
+ * You can call the method via the monster namespace `Monster.Types.isSymbol()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
+ * console.log(Monster.Types.isSymbol('2')) // ↦ false
+ * console.log(Monster.Types.isSymbol(Symbol('test')) // ↦ true
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {isSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
+ * console.log(isSymbol(Symbol('a')))  // ↦ true
+ * console.log(isSymbol([])  // ↦ false
+ * </script>
+ * ```
+ *
+ * @param {*} value
+ * @returns {boolean}
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/Types
+ */
+function isSymbol(value) {
+    return ('symbol' === typeof value) ? true : false;
+}
+
 /**
  * Checks whether the value passed is a boolean
  *
@@ -362,5 +395,17 @@ function isInteger(value) {
 }
 
 
-Monster.assignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction, isIterable, isInteger);
-export {Monster, isPrimitive, isBoolean, isString, isObject, isInstance, isArray, isFunction, isIterable, isInteger}
+Monster.assignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction, isIterable, isInteger, isSymbol);
+export {
+    Monster,
+    isPrimitive,
+    isBoolean,
+    isString,
+    isObject,
+    isInstance,
+    isArray,
+    isFunction,
+    isIterable,
+    isInteger,
+    isSymbol
+}
diff --git a/packages/monster/source/types/validate.js b/packages/monster/source/types/validate.js
index 28efae13a761f25fd287ad7c2ba5485b1791ec33..08b555d13fcbcb202a1ff10e1e8382e81bd3a5c1 100644
--- a/packages/monster/source/types/validate.js
+++ b/packages/monster/source/types/validate.js
@@ -14,7 +14,8 @@ import {
     isFunction,
     isIterable,
     isInstance,
-    isInteger
+    isInteger,
+    isSymbol
 } from './is.js';
 
 /**
@@ -26,7 +27,7 @@ import {
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateIterable('2')) // ↦ TypeError
- * console.log(Monster.Types.validateIterable([])) // ↦ undefined
+ * console.log(Monster.Types.validateIterable([])) // ↦ value
  * </script>
  * ```
  *
@@ -36,7 +37,7 @@ import {
  * <script type="module">
  * import {validateIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateIterable('2'))  // ↦ TypeError
- * console.log(validateIterable([]))  // ↦ undefined
+ * console.log(validateIterable([]))  // ↦ value
  * </script>
  * ```
  *
@@ -65,7 +66,7 @@ function validateIterable(value) {
  * ```
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(Monster.Types.validatePrimitive('2')) // ↦ undefined
+ * console.log(Monster.Types.validatePrimitive('2')) // ↦ value
  * console.log(Monster.Types.validatePrimitive([])) // ↦ TypeError
  * </script>
  * ```
@@ -75,7 +76,7 @@ function validateIterable(value) {
  * ```
  * <script type="module">
  * import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(validatePrimitive('2'))  // ↦ undefined
+ * console.log(validatePrimitive('2'))  // ↦ value
  * console.log(validatePrimitive([]))  // ↦ TypeError
  * </script>
  * ```
@@ -105,7 +106,7 @@ function validatePrimitive(value) {
  * ```
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(Monster.Types.validateBoolean(true)) // ↦ undefined
+ * console.log(Monster.Types.validateBoolean(true)) // ↦ value
  * console.log(Monster.Types.validateBoolean('2')) // ↦ TypeError
  * console.log(Monster.Types.validateBoolean([])) // ↦ TypeError
  * </script>
@@ -116,7 +117,7 @@ function validatePrimitive(value) {
  * ```
  * <script type="module">
  * import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(validateBoolean(false))  // ↦ undefined
+ * console.log(validateBoolean(false))  // ↦ value
  * console.log(validateBoolean('2'))  // ↦ TypeError
  * console.log(validateBoolean([]))  // ↦ TypeError
  * </script>
@@ -145,7 +146,7 @@ function validateBoolean(value) {
  * ```
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(Monster.Types.validateString('2')) // ↦ undefined
+ * console.log(Monster.Types.validateString('2')) // ↦ value
  * console.log(Monster.Types.validateString([])) // ↦ TypeError
  * </script>
  * ```
@@ -155,7 +156,7 @@ function validateBoolean(value) {
  * ```
  * <script type="module">
  * import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(validateString('2'))  // ↦ undefined
+ * console.log(validateString('2'))  // ↦ value
  * console.log(validateString([]))  // ↦ TypeError
  * </script>
  * ```
@@ -183,7 +184,7 @@ function validateString(value) {
  * ```
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(Monster.Types.validateObject({})) // ↦ undefined
+ * console.log(Monster.Types.validateObject({})) // ↦ value
  * console.log(Monster.Types.validateObject('2')) // ↦ TypeError
  * console.log(Monster.Types.validateObject([])) // ↦ TypeError
  * </script>
@@ -194,7 +195,7 @@ function validateString(value) {
  * ```
  * <script type="module">
  * import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(validateObject({}))  // ↦ undefined
+ * console.log(validateObject({}))  // ↦ value
  * console.log(validateObject('2'))  // ↦ TypeError
  * console.log(validateObject([]))  // ↦ TypeError
  * </script>
@@ -222,7 +223,7 @@ function validateObject(value) {
  * ```
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(Monster.Types.validateInstance({}, Object)) // ↦ undefined
+ * console.log(Monster.Types.validateInstance({}, Object)) // ↦ value
  * console.log(Monster.Types.validateInstance('2', Object)) // ↦ TypeError
  * console.log(Monster.Types.validateInstance([], Object)) // ↦ TypeError
  * </script>
@@ -233,7 +234,7 @@ function validateObject(value) {
  * ```
  * <script type="module">
  * import {validateInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(validateInstance({}, Object)) // ↦ undefined
+ * console.log(validateInstance({}, Object)) // ↦ value
  * console.log(validateInstance('2', Object)) // ↦ TypeError
  * console.log(validateInstance([], Object)) // ↦ TypeError
  * </script>
@@ -271,7 +272,7 @@ function validateInstance(value, instance) {
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateArray('2')) // ↦ TypeError
- * console.log(Monster.Types.validateArray([])) // ↦ undefined
+ * console.log(Monster.Types.validateArray([])) // ↦ value
  * </script>
  * ```
  *
@@ -281,7 +282,7 @@ function validateInstance(value, instance) {
  * <script type="module">
  * import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateArray('2'))  // ↦ TypeError
- * console.log(validateArray([]))  // ↦ undefined
+ * console.log(validateArray([]))  // ↦ value
  * </script>
  * ```
  *
@@ -299,6 +300,43 @@ function validateArray(value) {
     return value
 }
 
+/**
+ * This method checks if the type matches the symbol type. this function is identical to isSymbol() except that a TypeError is thrown.
+ *
+ * You can call the method via the monster namespace `Monster.Types.validateSymbol()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
+ * console.log(Monster.Types.validateSymbol('2')) // ↦ TypeError
+ * console.log(Monster.Types.validateSymbol([])) // ↦ value
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {validateSymbol} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
+ * console.log(validateSymbol('2'))  // ↦ TypeError
+ * console.log(validateSymbol())  // ↦ value
+ * </script>
+ * ```
+ *
+ * @param {*} value
+ * @return {*}
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/Types
+ * @throws {TypeError} value is not an symbol
+ */
+function validateSymbol(value) {
+    if (!isSymbol(value)) {
+        throw new TypeError('value is not an symbol')
+    }
+    return value
+}
+
 /**
  * This method checks if the type matches the function type. this function is identical to isFunction() except that a TypeError is thrown.
  *
@@ -307,7 +345,7 @@ function validateArray(value) {
  * ```
  * <script type="module">
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(Monster.Types.validateFunction(()=>{})) // ↦ undefined
+ * console.log(Monster.Types.validateFunction(()=>{})) // ↦ value
  * console.log(Monster.Types.validateFunction('2')) // ↦ TypeError
  * console.log(Monster.Types.validateFunction([])) // ↦ TypeError
  * </script>
@@ -318,7 +356,7 @@ function validateArray(value) {
  * ```
  * <script type="module">
  * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
- * console.log(validateFunction(()=>{})) // ↦ undefined
+ * console.log(validateFunction(()=>{})) // ↦ value
  * console.log(validateFunction('2'))  // ↦ TypeError
  * console.log(validateFunction([]))  // ↦ TypeError
  * </script>
@@ -348,7 +386,7 @@ function validateFunction(value) {
  * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateInteger(true)) // ↦ TypeError
  * console.log(Monster.Types.validateInteger('2')) // ↦ TypeError
- * console.log(Monster.Types.validateInteger(2)) // ↦ undefined
+ * console.log(Monster.Types.validateInteger(2)) // ↦ value
  * </script>
  * ```
  *
@@ -359,7 +397,7 @@ function validateFunction(value) {
  * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateInteger(true)) // ↦ TypeError
  * console.log(validateInteger('2'))  // ↦ TypeError
- * console.log(validateInteger(2))  // ↦ undefined
+ * console.log(validateInteger(2))  // ↦ value
  * </script>
  * ```
  *
@@ -388,5 +426,6 @@ export {
     validateArray,
     validateFunction,
     validateIterable,
-    validateInteger
+    validateInteger,
+    validateSymbol
 }
diff --git a/packages/monster/test/cases/types/is.js b/packages/monster/test/cases/types/is.js
index 3e544a891db146776c82e1cf1b4db902b8f9259d..a973e23a382672bbaaa05666012b2bc24a1dcdca 100644
--- a/packages/monster/test/cases/types/is.js
+++ b/packages/monster/test/cases/types/is.js
@@ -8,7 +8,8 @@ import {
     isInstance,
     isFunction,
     isIterable,
-    isInteger
+    isInteger,
+    isSymbol
 } from "../../../source/types/is.js";
 
 
@@ -50,6 +51,34 @@ describe('Is', function () {
         });
 
 
+    });
+    describe('.isSymbol()', function () {
+
+        [
+            ['test1', false],
+            [undefined, false],
+            [null, false],
+            [() => {
+            }, false],
+            [2, false],
+            [parseInt("a"), false],
+            [false, false],
+            [true, false],
+            [4.5, false],
+            [{}, false],
+            [[1, 2, 3], false],
+            [Symbol("foo"), true],
+        ].forEach(function (data) {
+
+            let a = data.shift()
+            let b = data.shift()
+
+            it('is.isSymbol(' + typeof a + ') should return ' + b, function () {
+                expect(isSymbol(a)).is.equal(b)
+            });
+        });
+
+
     });
 
     describe('.isInteger()', function () {
diff --git a/packages/monster/test/cases/types/validate.js b/packages/monster/test/cases/types/validate.js
index 2422c3a22947681c252ebb9e17b7333f7a8d127d..74c91c1b55eba17dde4bc8ac7f3d84940a8c1dcc 100644
--- a/packages/monster/test/cases/types/validate.js
+++ b/packages/monster/test/cases/types/validate.js
@@ -8,7 +8,8 @@ import {
     validateFunction,
     validateInteger,
     validateInstance,
-    validateIterable
+    validateIterable,
+    validateSymbol
 } from "../../../source/types/validate.js"
 
 import {Base} from "../../../source/types/base.js"
@@ -90,6 +91,43 @@ describe('validate', function () {
         });
 
 
+    });
+    
+    describe('.validateSymbol()', function () {
+
+        [
+            ['test1', false],
+            [undefined, false],
+            [null, false],
+            [() => {
+            }, false],
+            [2, false],
+            [false, false],
+            [true, false],
+            [4.5, false],
+            [{}, false],
+            [[1, 2, 3], false],
+            [Symbol("foo"), true],
+        ].forEach(function (data) {
+
+            let a = data.shift()
+            let b = data.shift()
+
+            if (b === false) {
+
+                it('.validateSymbol(' + typeof a + ') should throw TypeException ' + b, function () {
+                    expect(() => validateSymbol(a)).to.throw(TypeError);
+                });
+
+            } else {
+                it('.validateSymbol(' + typeof a + ') should not throw TypeException ' + b, function () {
+                    expect(validateSymbol(a)).to.be.equal(a);
+                });
+            }
+
+        });
+
+
     });
 
     describe('.validateIterable()', function () {
diff --git a/packages/monster/test/web/import.js b/packages/monster/test/web/import.js
index a24d22b8775aca1fc8b04a496abaf9c44feb0064..583dfd8d49bb8214b5dc764160a6b727a8d78b02 100644
--- a/packages/monster/test/web/import.js
+++ b/packages/monster/test/web/import.js
@@ -5,6 +5,7 @@ import "../cases/logging/handler.js";
 import "../cases/logging/logentry.js";
 import "../cases/dom/handle.js";
 import "../cases/dom/updater.js";
+import "../cases/dom/attributes.js";
 import "../cases/dom/template.js";
 import "../cases/dom/util.js";
 import "../cases/dom/assembler.js";
diff --git a/packages/monster/test/web/tests.js b/packages/monster/test/web/tests.js
index 4952a7a1bd1562205aa7a070c202b2c3962e89ed..1889df4ac969c44bed7d8fc86f17c5aaa112f3af 100644
--- a/packages/monster/test/web/tests.js
+++ b/packages/monster/test/web/tests.js
@@ -4802,7 +4802,7 @@ Object.defineProperty(exports, 'CryptoKey', {
 exports.Crypto = Crypto;
 
 }).call(this)}).call(this,require("buffer").Buffer)
-},{"@peculiar/asn1-schema":36,"@peculiar/json-schema":45,"buffer":128,"crypto":173,"process":1212,"pvtsutils":989,"tslib":1059,"webcrypto-core":1078}],47:[function(require,module,exports){
+},{"@peculiar/asn1-schema":36,"@peculiar/json-schema":45,"buffer":128,"crypto":173,"process":1214,"pvtsutils":989,"tslib":1059,"webcrypto-core":1078}],47:[function(require,module,exports){
 "use strict";
 function noop() { }
 function once(emitter, name) {
@@ -220990,7 +220990,7 @@ exports.AbstractConstraint = AbstractConstraint;
 
 _namespace.Monster.assignToNamespace('Monster.Constraints', AbstractConstraint);
 
-},{"../namespace.js":1151,"../types/base.js":1152,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1127:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/base.js":1153,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1127:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -221105,7 +221105,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/andoperator.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/andoperator.js';
  * new Monster.Constraint.AndOperator();
  * </script>
  * ```
@@ -221114,16 +221114,16 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/andoperator.js';
+ * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/andoperator.js';
  * new AndOperator();
  * </script>
  * ```
  * 
  * @example
  *
- * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/valid.js';
- * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/invalid.js';
- * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/andoperator.js';
+ * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/valid.js';
+ * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/invalid.js';
+ * import {AndOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/andoperator.js';
  *
  * new AndOperator(
  * new Valid(), new Valid()).isValid()
@@ -221213,7 +221213,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/invalid.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/invalid.js';
  * new Monster.Constraint.Invalid();
  * </script>
  * ```
@@ -221222,14 +221222,14 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/invalid.js';
+ * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/invalid.js';
  * new Invalid();
  * </script>
  * ```
  *
  * @example
  *
- * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/invalid.js';
+ * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/invalid.js';
  *
  * new Invalid().isValid()
  * .then(()=>console.log(true))
@@ -221312,7 +221312,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/isarray.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/isarray.js';
  * console.log(new Monster.Constraint.IsArray())
  * </script>
  * ```
@@ -221321,14 +221321,14 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/isarray.js';
+ * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/isarray.js';
  * console.log(new IsArray())
  * </script>
  * ```
  * 
  * @example
  *
- * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/isarray.js';
+ * import {IsArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/isarray.js';
  *
  * new IsArray()
  * .isValid([])
@@ -221378,7 +221378,7 @@ exports.IsArray = IsArray;
 
 _abstract.Monster.assignToNamespace('Monster.Constraints', IsArray);
 
-},{"../types/is.js":1155,"./abstract.js":1126,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1131:[function(require,module,exports){
+},{"../types/is.js":1156,"./abstract.js":1126,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1131:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -221420,7 +221420,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/isobject.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/isobject.js';
  * console.log(new Monster.Constraint.IsObject())
  * </script>
  * ```
@@ -221429,14 +221429,14 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/isobject.js';
+ * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/isobject.js';
  * console.log(new IsObject())
  * </script>
  * ```
  * 
  * @example
  *
- * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/isobject.js';
+ * import {IsObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/isobject.js';
  *
  * new IsObject()
  * .isValid({})
@@ -221487,7 +221487,7 @@ exports.IsObject = IsObject;
 
 _abstract.Monster.assignToNamespace('Monster.Constraints', IsObject);
 
-},{"../types/is.js":1155,"./abstract.js":1126,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1132:[function(require,module,exports){
+},{"../types/is.js":1156,"./abstract.js":1126,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1132:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -221527,7 +221527,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraint/oroperator.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraint/oroperator.js';
  * new Monster.Constraint.OrOperator();
  * </script>
  * ```
@@ -221536,16 +221536,16 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraint/oroperator.js';
+ * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraint/oroperator.js';
  * new OrOperator();
  * </script>
  * ```
  *
  * @example
  *
- * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/valid.js';
- * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/invalid.js';
- * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/oroperator.js';
+ * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/valid.js';
+ * import {Invalid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/invalid.js';
+ * import {OrOperator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/oroperator.js';
  *
  * new OrOperator(
  * new Valid(), new Invalid()).isValid()
@@ -221658,7 +221658,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/valid.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/valid.js';
  * new Monster.Constraint.Valid();
  * </script>
  * ```
@@ -221667,14 +221667,14 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/valid.js';
+ * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/valid.js';
  * new Valid();
  * </script>
  * ```
  * 
  * @example
  *
- * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/constraints/valid.js';
+ * import {Valid} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/constraints/valid.js';
  *
  * new Valid().isValid()
  * .then(()=>console.log(true))
@@ -221762,7 +221762,7 @@ function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/buildmap.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/buildmap.js';
  * console.log(Monster.Data.buildMap())
  * </script>
  * ```
@@ -221771,7 +221771,7 @@ function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return
  *
  * ```
  * <script type="module">
- * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/buildmap.js';
+ * import {buildMap} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/buildmap.js';
  * console.log(buildMap())
  * </script>
  * ```
@@ -221911,7 +221911,7 @@ function build(subject, definition, defaultValue) {
 
 _namespace.Monster.assignToNamespace('Monster.Data', buildMap);
 
-},{"../namespace.js":1151,"../types/is.js":1155,"../types/validate.js":1165,"./pathfinder.js":1136,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/setPrototypeOf":20,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24}],1135:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/is.js":1156,"../types/validate.js":1166,"./pathfinder.js":1136,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/setPrototypeOf":20,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24}],1135:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -221943,7 +221943,7 @@ var _is = require("../types/is.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/diff.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/diff.js';
  * console.log(Monster.Data.Diff(a, b))
  * </script>
  * ```
@@ -221952,14 +221952,14 @@ var _is = require("../types/is.js");
  *
  * ```
  * <script type="module">
- * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/diff.js';
+ * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/diff.js';
  * console.log(Diff(a, b))
  * </script>
  * ```
  *
  * @example
  * 
- * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/diff.js';
+ * import {Diff} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/diff.js';
  * 
  * // given are two objects x and y.
  *
@@ -222175,7 +222175,7 @@ function getOperator(a, b) {
 
 _is.Monster.assignToNamespace('Monster.Data', Diff);
 
-},{"../types/is.js":1155,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1136:[function(require,module,exports){
+},{"../types/is.js":1156,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1136:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -222242,7 +222242,7 @@ var WILDCARD = '*';
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pathfinder.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pathfinder.js';
  * console.log(new Monster.Data.Pathfinder())
  * </script>
  * ```
@@ -222251,7 +222251,7 @@ var WILDCARD = '*';
  *
  * ```
  * <script type="module">
- * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pathfinder.js';
+ * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pathfinder.js';
  * console.log(new Pathfinder())
  * </script>
  * ```
@@ -222293,7 +222293,7 @@ var WILDCARD = '*';
  *
  * @example
  *
- * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pathfinder.js';
+ * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pathfinder.js';
  *
  * let value = new Pathfinder({
  * a: {
@@ -222319,7 +222319,7 @@ var WILDCARD = '*';
  *
  * @example
  *
- * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pathfinder.js';
+ * import {Pathfinder} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pathfinder.js';
  *
  * let p = new Pathfinder({
  *                a: {
@@ -222663,7 +222663,7 @@ function deleteValueViaPath(object, path) {
   return;
 }
 
-},{"../namespace.js":1151,"../types/base.js":1152,"../types/is.js":1155,"../types/stack.js":1161,"../types/validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/slicedToArray":21,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24}],1137:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/base.js":1153,"../types/is.js":1156,"../types/stack.js":1162,"../types/validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/slicedToArray":21,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24}],1137:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -222714,7 +222714,7 @@ var DELIMITER = '|';
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pipe.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pipe.js';
  * console.log(new Monster.Data.Pipe())
  * </script>
  * ```
@@ -222723,7 +222723,7 @@ var DELIMITER = '|';
  *
  * ```
  * <script type="module">
- * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pipe.js';
+ * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pipe.js';
  * console.log(new Pipe())
  * </script>
  * ```
@@ -222734,7 +222734,7 @@ var DELIMITER = '|';
  * the word is then converted to uppercase letters and a prefix Hello is added. the two backslash safe the space char.
  *
  * @example
- * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/pipe.js';
+ * import {Pipe} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/pipe.js';
  * 
  * let obj = {
  *    a: {
@@ -222821,7 +222821,7 @@ exports.Pipe = Pipe;
 
 _namespace.Monster.assignToNamespace('Monster.Data', Pipe);
 
-},{"../namespace.js":1151,"../types/base.js":1152,"../types/validate.js":1165,"./transformer.js":1138,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/slicedToArray":21}],1138:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/base.js":1153,"../types/validate.js":1166,"./transformer.js":1138,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/slicedToArray":21}],1138:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -222891,7 +222891,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/transformer.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/transformer.js';
  * console.log(new Monster.Data.Transformer())
  * </script>
  * ```
@@ -222900,7 +222900,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/transformer.js';
+ * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/transformer.js';
  * console.log(new Transformer())
  * </script>
  * ```
@@ -222977,7 +222977,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  * 
  * @example
  * 
- * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/data/transformer.js';
+ * import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/data/transformer.js';
  * 
  * const transformer = new Transformer("tolower")
  * 
@@ -223325,7 +223325,7 @@ function transform(value) {
   return value;
 }
 
-},{"../namespace.js":1151,"../types/base.js":1152,"../types/id.js":1154,"../types/is.js":1155,"../types/validate.js":1165,"../util/clone.js":1167,"./pathfinder.js":1136,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/setPrototypeOf":20,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24}],1139:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/base.js":1153,"../types/id.js":1155,"../types/is.js":1156,"../types/validate.js":1166,"../util/clone.js":1168,"./pathfinder.js":1136,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/setPrototypeOf":20,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24}],1139:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -223378,7 +223378,7 @@ var ATTRIBUTEPREFIX = "data-monster-";
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/assembler.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/assembler.js';
  * console.log(new Monster.DOM.Assembler())
  * </script>
  * ```
@@ -223387,7 +223387,7 @@ var ATTRIBUTEPREFIX = "data-monster-";
  *
  * ```
  * <script type="module">
- * import {Assembler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/assembler.js';
+ * import {Assembler} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/assembler.js';
  * console.log(new Assembler())
  * </script>
  * ```
@@ -223471,7 +223471,301 @@ exports.Assembler = Assembler;
 
 _base.Monster.assignToNamespace('Monster.DOM', Assembler);
 
-},{"../types/base.js":1152,"../types/global.js":1153,"../types/proxyobserver.js":1158,"../types/validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1140:[function(require,module,exports){
+},{"../types/base.js":1153,"../types/global.js":1154,"../types/proxyobserver.js":1159,"../types/validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1140:[function(require,module,exports){
+'use strict';
+/**
+ * @author schukai GmbH
+ */
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.clearAttributeTokens = clearAttributeTokens;
+exports.replaceAttributeToken = replaceAttributeToken;
+exports.containsAttributeToken = containsAttributeToken;
+exports.removeAttributeToken = removeAttributeToken;
+exports.addAttributeToken = addAttributeToken;
+exports.toggleAttributeToken = toggleAttributeToken;
+Object.defineProperty(exports, "Monster", {
+  enumerable: true,
+  get: function get() {
+    return _namespace.Monster;
+  }
+});
+
+var _namespace = require("../namespace.js");
+
+var _tokenlist = require("../types/tokenlist.js");
+
+var _validate = require("../types/validate.js");
+
+/**
+ * With this method tokens in an attribute can be switched on or off. For example, classes can be switched on and off in the elements class attribute.
+ *
+ * Tokens are always separated by a space.
+ *
+ * You can call the method via the monster namespace `new Monster.DOM.toggleAttributeToken()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * Monster.DOM.toggleAttributeToken();
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {toggleAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * toggleAttributeToken();
+ * </script>
+ * ```
+ *
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/DOM
+ * @param {HTMLElement} element
+ * @param {string} key
+ * @param {string} token
+ * @return {HTMLElement}
+ */
+function toggleAttributeToken(element, key, token) {
+  (0, _validate.validateInstance)(element, HTMLElement);
+  (0, _validate.validateString)(token);
+  (0, _validate.validateString)(key);
+
+  if (!element.hasAttribute(key)) {
+    element.setAttribute(key, token);
+    return element;
+  }
+
+  element.setAttribute(key, new _tokenlist.TokenList(element.getAttribute(key)).toggle(token).toString());
+  return element;
+}
+/**
+ * this method can be used to add a token to an attribute. Tokens are always separated by a space.
+ *
+ * You can call the method via the monster namespace `new Monster.DOM.addAttributeToken()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * Monster.DOM.addAttributeToken();
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {addAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * addAttributeToken();
+ * </script>
+ * ```
+ *
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/DOM
+ * @param {HTMLElement} element
+ * @param {string} key
+ * @param {string} token
+ * @return {HTMLElement}
+ */
+
+
+function addAttributeToken(element, key, token) {
+  (0, _validate.validateInstance)(element, HTMLElement);
+  (0, _validate.validateString)(token);
+  (0, _validate.validateString)(key);
+
+  if (!element.hasAttribute(key)) {
+    element.setAttribute(key, token);
+    return element;
+  }
+
+  element.setAttribute(key, new _tokenlist.TokenList(element.getAttribute(key)).add(token).toString());
+  return element;
+}
+/**
+ * This function can be used to remove tokens from an attribute.
+ *
+ * Tokens are always separated by a space.
+ *
+ * You can call the method via the monster namespace `new Monster.DOM.removeAttributeToken()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * Monster.DOM.removeAttributeToken();
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {removeAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * removeAttributeToken();
+ * </script>
+ * ```
+ *
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/DOM
+ * @param {HTMLElement} element
+ * @param {string} key
+ * @param {string} token
+ * @return {HTMLElement}
+ */
+
+
+function removeAttributeToken(element, key, token) {
+  (0, _validate.validateInstance)(element, HTMLElement);
+  (0, _validate.validateString)(token);
+  (0, _validate.validateString)(key);
+
+  if (!element.hasAttribute(key)) {
+    return element;
+  }
+
+  element.setAttribute(key, new _tokenlist.TokenList(element.getAttribute(key)).remove(token).toString());
+  return element;
+}
+/**
+ * This method can be used to determine whether an attribute has a token.
+ *
+ * Tokens are always separated by a space.
+ *
+ * You can call the method via the monster namespace `new Monster.DOM.containsAttributeToken()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * Monster.DOM.containsAttributeToken();
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {containsAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * containsAttributeToken();
+ * </script>
+ * ```
+ *
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/DOM
+ * @param {HTMLElement} element
+ * @param {string} key
+ * @param {string} token
+ * @return {boolean}
+ */
+
+
+function containsAttributeToken(element, key, token) {
+  (0, _validate.validateInstance)(element, HTMLElement);
+  (0, _validate.validateString)(token);
+  (0, _validate.validateString)(key);
+
+  if (!element.hasAttribute(key)) {
+    return false;
+  }
+
+  return new _tokenlist.TokenList(element.getAttribute(key)).contains(token);
+}
+/**
+ * Tokens are always separated by a space.
+ *
+ * You can call the method via the monster namespace `new Monster.DOM.replaceAttributeToken()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * Monster.DOM.replaceAttributeToken();
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {replaceAttributeToken} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * replaceAttributeToken();
+ * </script>
+ * ```
+ *
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/DOM
+ * @param {HTMLElement} element
+ * @param {string} key
+ * @param {string} from
+ * @param {string} to
+ * @return {HTMLElement}
+ */
+
+
+function replaceAttributeToken(element, key, from, to) {
+  (0, _validate.validateInstance)(element, HTMLElement);
+  (0, _validate.validateString)(from);
+  (0, _validate.validateString)(to);
+  (0, _validate.validateString)(key);
+
+  if (!element.hasAttribute(key)) {
+    return element;
+  }
+
+  element.setAttribute(key, new _tokenlist.TokenList(element.getAttribute(key)).replace(from, to).toString());
+  return element;
+}
+/**
+ * Tokens are always separated by a space.
+ *
+ * You can call the method via the monster namespace `new Monster.DOM.clearAttributeTokens()`.
+ *
+ * ```
+ * <script type="module">
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * Monster.DOM.clearAttributeTokens();
+ * </script>
+ * ```
+ *
+ * Alternatively, you can also integrate this function individually.
+ *
+ * ```
+ * <script type="module">
+ * import {clearAttributeTokens} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/attributes.js';
+ * clearAttributeTokens();
+ * </script>
+ * ```
+ *
+ * @since 1.9.0
+ * @copyright schukai GmbH
+ * @memberOf Monster/DOM
+ * @param {HTMLElement} element
+ * @param {string} key
+ * @return {HTMLElement}
+ */
+
+
+function clearAttributeTokens(element, key) {
+  (0, _validate.validateInstance)(element, HTMLElement);
+  (0, _validate.validateString)(key);
+
+  if (!element.hasAttribute(key)) {
+    return element;
+  }
+
+  element.setAttribute(key, "");
+  return element;
+}
+
+_namespace.Monster.assignToNamespace('Monster.DOM', clearAttributeTokens, replaceAttributeToken, containsAttributeToken, removeAttributeToken, addAttributeToken, toggleAttributeToken);
+
+},{"../namespace.js":1152,"../types/tokenlist.js":1163,"../types/validate.js":1166}],1141:[function(require,module,exports){
 'use strict';
 
 Object.defineProperty(exports, "__esModule", {
@@ -223483,7 +223777,7 @@ Object.defineProperty(exports, "Monster", {
     return _namespace.Monster;
   }
 });
-exports.ATTRIBUTE_UPDATER_REMOVE = exports.ATTRIBUTE_UPDATER_INSERT_REFERENCE = exports.ATTRIBUTE_UPDATER_INSERT = exports.ATTRIBUTE_UPDATER_REPLACE = exports.ATTRIBUTE_UPDATER_ATTRIBUTES = exports.ATTRIBUTE_THEME_NAME = exports.ATTRIBUTE_THEME_PREFIX = exports.DEFAULT_THEME = exports.ATTRIBUTE_OPTIONS = exports.ATTRIBUTE_PREFIX = void 0;
+exports.ATTRIBUTE_UPDATER_HASSYMBOL = exports.ATTRIBUTE_UPDATER_BIND = exports.ATTRIBUTE_UPDATER_REMOVE = exports.ATTRIBUTE_UPDATER_INSERT_REFERENCE = exports.ATTRIBUTE_UPDATER_INSERT = exports.ATTRIBUTE_UPDATER_REPLACE = exports.ATTRIBUTE_UPDATER_ATTRIBUTES = exports.ATTRIBUTE_THEME_NAME = exports.ATTRIBUTE_THEME_PREFIX = exports.DEFAULT_THEME = exports.ATTRIBUTE_OPTIONS = exports.ATTRIBUTE_PREFIX = void 0;
 
 var _namespace = require("../namespace.js");
 
@@ -223568,9 +223862,25 @@ var ATTRIBUTE_UPDATER_INSERT_REFERENCE = ATTRIBUTE_PREFIX + 'insert-reference';
 
 exports.ATTRIBUTE_UPDATER_INSERT_REFERENCE = ATTRIBUTE_UPDATER_INSERT_REFERENCE;
 var ATTRIBUTE_UPDATER_REMOVE = ATTRIBUTE_PREFIX + 'remove';
+/**
+ * @memberOf Monster/DOM
+ * @type {string}
+ * @since 1.9.0
+ */
+
 exports.ATTRIBUTE_UPDATER_REMOVE = ATTRIBUTE_UPDATER_REMOVE;
+var ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_PREFIX + 'bind';
+/**
+ * @memberOf Monster/DOM
+ * @type {string}
+ * @since 1.9.0
+ */
+
+exports.ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_UPDATER_BIND;
+var ATTRIBUTE_UPDATER_HASSYMBOL = ATTRIBUTE_PREFIX + 'hassymbol';
+exports.ATTRIBUTE_UPDATER_HASSYMBOL = ATTRIBUTE_UPDATER_HASSYMBOL;
 
-},{"../namespace.js":1151}],1141:[function(require,module,exports){
+},{"../namespace.js":1152}],1142:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -223626,7 +223936,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/customelement.js';
+ * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/customelement.js';
  * console.log(new Monster.DOM.CustomElement())
  * </script>
  * ```
@@ -223635,7 +223945,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/customelement.js';
+ * import {CustomElement} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/customelement.js';
  * console.log(new CustomElement())
  * </script>
  * ```
@@ -223958,7 +224268,7 @@ function registerCustomElement(element) {
 
 _validate.Monster.assignToNamespace('Monster.DOM', CustomElement, registerCustomElement);
 
-},{"../types/global.js":1153,"../types/validate.js":1165,"./constants.js":1140,"./template.js":1143,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/wrapNativeSuper":26}],1142:[function(require,module,exports){
+},{"../types/global.js":1154,"../types/validate.js":1166,"./constants.js":1141,"./template.js":1144,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/wrapNativeSuper":26}],1143:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -224028,7 +224338,7 @@ var MONSTERDOMHANDLE = Symbol('MonsterHandle');
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/handle.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/handle.js';
  * console.log(new Monster.DOM.Handle())
  * </script>
  * ```
@@ -224037,7 +224347,7 @@ var MONSTERDOMHANDLE = Symbol('MonsterHandle');
  *
  * ```
  * <script type="module">
- * import {Handle} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/handle.js';
+ * import {Handle} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/handle.js';
  * console.log(new Handle())
  * </script>
  * ```
@@ -224202,7 +224512,7 @@ function createMutationObserver() {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/handle.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/handle.js';
  * console.log(Monster.DOM.getHandleFromNode())
  * </script>
  * ```
@@ -224211,7 +224521,7 @@ function createMutationObserver() {
  *
  * ```
  * <script type="module">
- * import {getHandleFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/handle.js';
+ * import {getHandleFromNode} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/handle.js';
  * console.log(getHandleFromNode())
  * </script>
  * ```
@@ -224244,7 +224554,7 @@ function getHandleFromNode(node) {
 
 _base.Monster.assignToNamespace('Monster.DOM', getHandleFromNode, Handle);
 
-},{"../types/base.js":1152,"../types/global.js":1153,"../types/id.js":1154,"../types/is.js":1155,"../types/observer.js":1156,"../types/proxyobserver.js":1158,"../types/stack.js":1161,"../types/validate.js":1165,"./assembler.js":1139,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1143:[function(require,module,exports){
+},{"../types/base.js":1153,"../types/global.js":1154,"../types/id.js":1155,"../types/is.js":1156,"../types/observer.js":1157,"../types/proxyobserver.js":1159,"../types/stack.js":1162,"../types/validate.js":1166,"./assembler.js":1139,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1144:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -224291,7 +224601,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/template.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/template.js';
  * console.log(new Monster.DOM.Template())
  * </script>
  * ```
@@ -224300,7 +224610,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/template.js';
+ * import {Template} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/template.js';
  * console.log(new Template())
  * </script>
  * ```
@@ -224363,7 +224673,7 @@ var Template = /*#__PURE__*/function (_Base) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/template.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/template.js';
  * console.log(Monster.DOM.findDocumentTemplate())
  * </script>
  * ```
@@ -224372,7 +224682,7 @@ var Template = /*#__PURE__*/function (_Base) {
  *
  * ```
  * <script type="module">
- * import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/template.js';
+ * import {findTemplate} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/template.js';
  * console.log(findDocumentTemplate())
  * </script>
  * ```
@@ -224412,7 +224722,7 @@ function findDocumentTemplate(id) {
 
 _base.Monster.assignToNamespace('Monster.DOM', Template, findDocumentTemplate);
 
-},{"../types/base.js":1152,"../types/global.js":1153,"../types/validate.js":1165,"./theme.js":1144,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1144:[function(require,module,exports){
+},{"../types/base.js":1153,"../types/global.js":1154,"../types/validate.js":1166,"./theme.js":1145,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1145:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -224459,7 +224769,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/theme.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/theme.js';
  * console.log(new Monster.DOM.Theme())
  * </script>
  * ```
@@ -224468,14 +224778,14 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/theme.js';
+ * import {Theme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/theme.js';
  * console.log(new Theme())
  * </script>
  * ```
  * 
  * @example
  *
- * import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/theme.js';
+ * import {getDocumentTheme} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/theme.js';
  *
  * const theme = getDocumentTheme();
  * console.log(theme.getName());
@@ -224555,7 +224865,7 @@ function getDocumentTheme() {
 
 _base.Monster.assignToNamespace('Monster.DOM', Theme, getDocumentTheme);
 
-},{"../types/base.js":1152,"../types/global.js":1153,"../types/validate.js":1165,"./constants.js":1140,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1145:[function(require,module,exports){
+},{"../types/base.js":1153,"../types/global.js":1154,"../types/validate.js":1166,"./constants.js":1141,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1146:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -224585,6 +224895,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
 
 var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
 
+var _pathfinder = require("../data/pathfinder.js");
+
 var _pipe = require("../data/pipe.js");
 
 var _base = require("../types/base.js");
@@ -224620,11 +224932,20 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  */
 
 /**
+ * @private
+ * @type {Symbol}
+ */
+var symbol = Symbol('monster-updater');
+/**
+ * The updater class connects an object with the dom. in this way, structures and contents in the DOM can be programmatically adapted via attributes.
+ *
+ * For example, to include a string from an object, the attribute `data-monster-replace` can be used.
+ *
  * you can call the method via the monster namespace `new Monster.DOM.Updater()`.
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/updater.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/updater.js';
  * console.log(new Monster.DOM.Updater())
  * </script>
  * ```
@@ -224633,14 +224954,36 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/updater.js';
+ * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/updater.js';
  * console.log(new Updater())
  * </script>
  * ```
- * 
+ *
  * @example
- * 
- * 
+ *
+ * import {Updater} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/updater.js';
+ *
+ * // First we prepare the html document.
+ * // This is done here via script, but can also be inserted into the document as pure html.
+ * // To do this, simply insert the tag <h1 data-monster-replace="path:headline"></h1>.
+ * const body = document.querySelector('body');
+ * const headline = document.createElement('h1');
+ * headline.setAttribute('data-monster-replace','path:headline')
+ * body.appendChild(headline);
+ *
+ * // the data structure
+ * let obj = {
+ *    headline: "Hello World",
+ * };
+ *
+ * // Now comes the real magic. we pass the updater the parent HTMLElement
+ * // and the desired data structure.
+ * const updater = new Updater(body, obj);
+ * updater.run();
+ *
+ * // Now you can change the data structure and the HTML will follow these changes.
+ * const subject = updater.getSubject();
+ * subject['headline'] = "Hello World!"
  *
  * @since 1.8.0
  * @copyright schukai GmbH
@@ -224648,7 +224991,11 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  * @throws {Error} the value is not iterable
  * @throws {Error} pipes are not allowed when cloning a node.
  * @throws {Error} no template was found with the specified key.
+ * @throws {Error} the maximum depth for the recursion is reached.
+ * @throws {TypeError} value is not a object
+ * @throws {TypeError} value is not an instance of HTMLElement
  */
+
 var Updater = /*#__PURE__*/function (_Base) {
   (0, _inherits2["default"])(Updater, _Base);
 
@@ -224657,9 +225004,13 @@ var Updater = /*#__PURE__*/function (_Base) {
   /**
    * @since 1.8.0
    * @param {HTMLElement} element
-   * @param {object|ProxyObserver} subject
+   * @param {object|ProxyObserver|undefined} subject
+   * @throws {TypeError} value is not a object
+   * @throws {TypeError} value is not an instance of HTMLElement
    */
   function Updater(element, subject) {
+    var _this$element;
+
     var _this;
 
     (0, _classCallCheck2["default"])(this, Updater);
@@ -224670,6 +225021,16 @@ var Updater = /*#__PURE__*/function (_Base) {
 
     _this.element = (0, _validate.validateInstance)(element, HTMLElement);
 
+    if (((_this$element = _this.element) === null || _this$element === void 0 ? void 0 : _this$element[symbol]) === undefined) {
+      _this.element[symbol] = new Set();
+    }
+
+    _this.element[symbol].add((0, _assertThisInitialized2["default"])(_this));
+
+    _this.element.setAttribute(_constants.ATTRIBUTE_UPDATER_HASSYMBOL, symbol.toString());
+
+    if (subject === undefined) subject = {};
+
     if (!(0, _is.isInstance)(subject, _proxyobserver.ProxyObserver)) {
       subject = new _proxyobserver.ProxyObserver(subject);
     }
@@ -224696,21 +225057,87 @@ var Updater = /*#__PURE__*/function (_Base) {
         updateAttributes.call((0, _assertThisInitialized2["default"])(_this), change);
       }
     }));
+    _this.eventTypes = ['keyup', 'click'];
     return _this;
   }
   /**
-   * 
-   * @return {Promise}
+   *
+   * @since 1.9.0
+   * @return {Updater}
    */
 
 
   (0, _createClass2["default"])(Updater, [{
+    key: "enableEventProcessing",
+    value: function enableEventProcessing() {
+      this.disableEventProcessing();
+      var pathfinder = new _pathfinder.Pathfinder(this.subject.getSubject());
+
+      var _iterator = _createForOfIteratorHelper(this.eventTypes),
+          _step;
+
+      try {
+        for (_iterator.s(); !(_step = _iterator.n()).done;) {
+          var type = _step.value;
+          this.element.addEventListener(type, controlEventHandler);
+        }
+      } catch (err) {
+        _iterator.e(err);
+      } finally {
+        _iterator.f();
+      }
+
+      return this;
+    }
+    /**
+     *
+     * @since 1.9.0
+     * @return {Updater}
+     */
+
+  }, {
+    key: "disableEventProcessing",
+    value: function disableEventProcessing() {
+      var _iterator2 = _createForOfIteratorHelper(this.eventTypes),
+          _step2;
+
+      try {
+        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
+          var type = _step2.value;
+          this.element.removeEventListener(type, controlEventHandler);
+        }
+      } catch (err) {
+        _iterator2.e(err);
+      } finally {
+        _iterator2.f();
+      }
+
+      return this;
+    }
+    /**
+     * Let the magic begin
+     *
+     * The run method must be called for the update to start working.
+     *
+     * @return {Promise}
+     */
+
+  }, {
     key: "run",
     value: function run() {
-      this.last = {};
+      // the key __init__has no further meaning and is only 
+      // used to create the diff for empty objects.
+      this.last = {
+        '__init__': true
+      };
       return this.subject.notifyObservers();
     }
     /**
+     * If you have passed a ProxyObserver in the constructor, you will get the same object here.
+     * However, if you have passed a simple object, you will get the ProxyObserver here.
+     *
+     * For changes the ProxyObserver must be used.
+     *
      * @since 1.8.0
      * @return {ProxyObserver}
      */
@@ -224721,6 +225148,8 @@ var Updater = /*#__PURE__*/function (_Base) {
       return this.subject.getSubject();
     }
     /**
+     * This method can be used to register commands that can be called via call: instruction.
+     * This can be used to provide a pipe with its own functionality.
      *
      * @param {string} name
      * @param {function} callback
@@ -224738,6 +225167,26 @@ var Updater = /*#__PURE__*/function (_Base) {
   }]);
   return Updater;
 }(_base.Base);
+/**
+ * @private
+ * @param event
+ */
+
+
+exports.Updater = Updater;
+
+function controlEventHandler(event) {
+  var element = event.target;
+
+  if (element.hasAttribute(_constants.ATTRIBUTE_UPDATER_BIND)) {
+    var value = element.getAttribute(_constants.ATTRIBUTE_UPDATER_BIND);
+    console.log(value);
+    console.log(element[symbol]);
+    element[symbol].forEach(function (a, b) {
+      console.log(a, b);
+    });
+  }
+}
 /**
  * @private
  * @since 1.8.0
@@ -224746,23 +225195,21 @@ var Updater = /*#__PURE__*/function (_Base) {
  */
 
 
-exports.Updater = Updater;
-
 function removeElement(change) {
-  var _iterator = _createForOfIteratorHelper(this.element.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_REMOVE + ']').entries()),
-      _step;
+  var _iterator3 = _createForOfIteratorHelper(this.element.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_REMOVE + ']').entries()),
+      _step3;
 
   try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
-          element = _step$value[1];
+    for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+      var _step3$value = (0, _slicedToArray2["default"])(_step3.value, 2),
+          element = _step3$value[1];
 
       element.parentNode.removeChild(element);
     }
   } catch (err) {
-    _iterator.e(err);
+    _iterator3.e(err);
   } finally {
-    _iterator.f();
+    _iterator3.f();
   }
 
   return this;
@@ -224775,6 +225222,7 @@ function removeElement(change) {
  * @throws {Error} the value is not iterable
  * @throws {Error} pipes are not allowed when cloning a node.
  * @throws {Error} no template was found with the specified key.
+ * @throws {Error} the maximum depth for the recursion is reached.
  */
 
 
@@ -224784,96 +225232,110 @@ function insertElement(change) {
   var self = this;
   var subject = self.subject.getRealSubject();
   var document = (0, _util.getDocument)();
-  var p = (0, _clone.clone)(change === null || change === void 0 ? void 0 : change['path']);
-  if (!(0, _is.isArray)(p)) return this;
   var mem = new WeakSet();
+  var wd = 0;
+
+  while (true) {
+    var found = false;
+    wd++;
+    var p = (0, _clone.clone)(change === null || change === void 0 ? void 0 : change['path']);
+    if (!(0, _is.isArray)(p)) return this;
 
-  while (p.length > 0) {
-    var current = p.join('.');
+    while (p.length > 0) {
+      var current = p.join('.');
+      var list = this.element.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_INSERT + '*="path:' + current + '"]').entries();
 
-    var _iterator2 = _createForOfIteratorHelper(this.element.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_INSERT + '*="path:' + current + '"]').entries()),
-        _step2;
+      var _iterator4 = _createForOfIteratorHelper(list),
+          _step4;
 
-    try {
-      var _loop = function _loop() {
-        var _step2$value = (0, _slicedToArray2["default"])(_step2.value, 2),
-            containerElement = _step2$value[1];
+      try {
+        var _loop = function _loop() {
+          var _step4$value = (0, _slicedToArray2["default"])(_step4.value, 2),
+              containerElement = _step4$value[1];
 
-        if (mem.has(containerElement)) return "continue";
-        mem.add(containerElement);
-        var attributes = containerElement.getAttribute(_constants.ATTRIBUTE_UPDATER_INSERT);
-        var def = attributes.trim();
-        var i = def.indexOf(' ');
-        var key = def.substr(0, i).trim();
-        var refPrefix = key + '-';
-        var cmd = def.substr(i).trim();
+          if (mem.has(containerElement)) return "continue";
+          mem.add(containerElement);
+          found = true;
+          var attributes = containerElement.getAttribute(_constants.ATTRIBUTE_UPDATER_INSERT);
+          var def = attributes.trim();
+          var i = def.indexOf(' ');
+          var key = def.substr(0, i).trim();
+          var refPrefix = key + '-';
+          var cmd = def.substr(i).trim();
 
-        if (cmd.indexOf('|') > 0) {
-          throw new Error("pipes are not allowed when cloning a node.");
-        }
+          if (cmd.indexOf('|') > 0) {
+            throw new Error("pipes are not allowed when cloning a node.");
+          }
 
-        var pipe = new _pipe.Pipe(cmd);
+          var pipe = new _pipe.Pipe(cmd);
 
-        _this2.callbacks.forEach(function (f, n) {
-          pipe.setCallback(n, f);
-        });
+          _this2.callbacks.forEach(function (f, n) {
+            pipe.setCallback(n, f);
+          });
 
-        var value = pipe.run(subject);
-        var dataPath = cmd.split(':').pop();
-        var insertPoint = void 0;
+          var value = pipe.run(subject);
+          var dataPath = cmd.split(':').pop();
+          var insertPoint = void 0;
 
-        if (containerElement.hasChildNodes()) {
-          insertPoint = containerElement.lastChild;
-        }
+          if (containerElement.hasChildNodes()) {
+            insertPoint = containerElement.lastChild;
+          }
 
-        if (!(0, _is.isArray)(value)) {
-          throw new Error('the value is not iterable');
-        }
+          if (!(0, _is.isArray)(value)) {
+            throw new Error('the value is not iterable');
+          }
 
-        var available = new Set();
+          var available = new Set();
 
-        for (var _i2 = 0, _Object$entries2 = Object.entries(value); _i2 < _Object$entries2.length; _i2++) {
-          var _Object$entries2$_i = (0, _slicedToArray2["default"])(_Object$entries2[_i2], 2),
-              _i3 = _Object$entries2$_i[0],
-              obj = _Object$entries2$_i[1];
+          for (var _i2 = 0, _Object$entries2 = Object.entries(value); _i2 < _Object$entries2.length; _i2++) {
+            var _Object$entries2$_i = (0, _slicedToArray2["default"])(_Object$entries2[_i2], 2),
+                _i3 = _Object$entries2$_i[0],
+                obj = _Object$entries2$_i[1];
 
-          var ref = refPrefix + _i3;
-          var currentPath = dataPath + "." + _i3;
-          available.add(ref);
-          var refElement = containerElement.querySelector('[' + _constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE + '="' + ref + '"]');
+            var ref = refPrefix + _i3;
+            var currentPath = dataPath + "." + _i3;
+            available.add(ref);
+            var refElement = containerElement.querySelector('[' + _constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE + '="' + ref + '"]');
 
-          if (refElement instanceof HTMLElement) {
-            insertPoint = refElement;
-            continue;
-          }
+            if (refElement instanceof HTMLElement) {
+              insertPoint = refElement;
+              continue;
+            }
 
-          appendNewDocumentFragment(containerElement, key, ref, currentPath);
-        }
+            appendNewDocumentFragment(containerElement, key, ref, currentPath);
+          }
 
-        var nodes = containerElement.querySelectorAll('[' + _constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE + '*="' + refPrefix + '"]');
+          var nodes = containerElement.querySelectorAll('[' + _constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE + '*="' + refPrefix + '"]');
 
-        for (var _i4 = 0, _Object$entries3 = Object.entries(nodes); _i4 < _Object$entries3.length; _i4++) {
-          var _Object$entries3$_i = (0, _slicedToArray2["default"])(_Object$entries3[_i4], 2),
-              node = _Object$entries3$_i[1];
+          for (var _i4 = 0, _Object$entries3 = Object.entries(nodes); _i4 < _Object$entries3.length; _i4++) {
+            var _Object$entries3$_i = (0, _slicedToArray2["default"])(_Object$entries3[_i4], 2),
+                node = _Object$entries3$_i[1];
 
-          if (!available.has(node.getAttribute(_constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE))) {
-            containerElement.removeChild(node);
+            if (!available.has(node.getAttribute(_constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE))) {
+              containerElement.removeChild(node);
+            }
           }
-        }
-      };
+        };
 
-      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
-        var _ret = _loop();
+        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
+          var _ret = _loop();
 
-        if (_ret === "continue") continue;
+          if (_ret === "continue") continue;
+        }
+      } catch (err) {
+        _iterator4.e(err);
+      } finally {
+        _iterator4.f();
       }
-    } catch (err) {
-      _iterator2.e(err);
-    } finally {
-      _iterator2.f();
+
+      p.pop();
     }
 
-    p.pop();
+    if (found === false) break;
+
+    if (wd++ > 200) {
+      throw new Error('the maximum depth for the recursion is reached.');
+    }
   }
 }
 /**
@@ -224903,8 +225365,11 @@ function appendNewDocumentFragment(container, key, ref, path) {
 
     if (node instanceof HTMLElement) {
       node.setAttribute(_constants.ATTRIBUTE_UPDATER_INSERT_REFERENCE, ref);
-      var value = node.getAttribute(_constants.ATTRIBUTE_UPDATER_REPLACE);
-      node.setAttribute(_constants.ATTRIBUTE_UPDATER_REPLACE, value.replace("path:" + key, "path:" + path));
+
+      if (node.hasAttribute(_constants.ATTRIBUTE_UPDATER_REPLACE)) {
+        var value = node.getAttribute(_constants.ATTRIBUTE_UPDATER_REPLACE);
+        node.setAttribute(_constants.ATTRIBUTE_UPDATER_REPLACE, value.replace("path:" + key, "path:" + path));
+      }
     }
 
     container.appendChild(node);
@@ -224926,7 +225391,6 @@ function updateContent(change) {
   return this;
 }
 /**
- *
  * @private
  * @since 1.8.0
  * @param {HTMLElement} container
@@ -224945,15 +225409,15 @@ function runUpdateContent(container, parts, subject) {
 
   while (parts.length > 0) {
     var current = parts.join('.');
-    parts.pop();
+    parts.pop(); // Unfortunately, static data is always changed as well, since it is not possible to react to changes here.
 
-    var _iterator3 = _createForOfIteratorHelper(container.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_REPLACE + '^="path:' + current + '"]').entries()),
-        _step3;
+    var _iterator5 = _createForOfIteratorHelper(container.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_REPLACE + '^="path:' + current + '"], [' + _constants.ATTRIBUTE_UPDATER_REPLACE + '^="static:"]').entries()),
+        _step5;
 
     try {
       var _loop2 = function _loop2() {
-        var _step3$value = (0, _slicedToArray2["default"])(_step3.value, 2),
-            element = _step3$value[1];
+        var _step5$value = (0, _slicedToArray2["default"])(_step5.value, 2),
+            element = _step5$value[1];
 
         if (mem.has(element)) return "continue";
         mem.add(element);
@@ -224978,15 +225442,15 @@ function runUpdateContent(container, parts, subject) {
         }
       };
 
-      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
+      for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
         var _ret2 = _loop2();
 
         if (_ret2 === "continue") continue;
       }
     } catch (err) {
-      _iterator3.e(err);
+      _iterator5.e(err);
     } finally {
-      _iterator3.f();
+      _iterator5.f();
     }
   }
 }
@@ -225024,13 +225488,13 @@ function runUpdateAttributes(container, parts, subject) {
     var current = parts.join('.');
     parts.pop();
 
-    var _iterator4 = _createForOfIteratorHelper(container.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_ATTRIBUTES + '*="path:' + current + '"]').entries()),
-        _step4;
+    var _iterator6 = _createForOfIteratorHelper(container.querySelectorAll(':scope [' + _constants.ATTRIBUTE_UPDATER_ATTRIBUTES + '*="path:' + current + '"]').entries()),
+        _step6;
 
     try {
-      for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
-        var _step4$value = (0, _slicedToArray2["default"])(_step4.value, 2),
-            element = _step4$value[1];
+      for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
+        var _step6$value = (0, _slicedToArray2["default"])(_step6.value, 2),
+            element = _step6$value[1];
 
         if (mem.has(element)) continue;
         mem.add(element);
@@ -225052,16 +225516,16 @@ function runUpdateAttributes(container, parts, subject) {
         }
       }
     } catch (err) {
-      _iterator4.e(err);
+      _iterator6.e(err);
     } finally {
-      _iterator4.f();
+      _iterator6.f();
     }
   }
 }
 
 _base.Monster.assignToNamespace('Monster.DOM', Updater);
 
-},{"../data/diff.js":1135,"../data/pipe.js":1137,"../dom/constants.js":1140,"../types/base.js":1152,"../types/is.js":1155,"../types/observer.js":1156,"../types/proxyobserver.js":1158,"../types/validate.js":1165,"../util/clone.js":1167,"./util.js":1146,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/slicedToArray":21}],1146:[function(require,module,exports){
+},{"../data/diff.js":1135,"../data/pathfinder.js":1136,"../data/pipe.js":1137,"../dom/constants.js":1141,"../types/base.js":1153,"../types/is.js":1156,"../types/observer.js":1157,"../types/proxyobserver.js":1159,"../types/validate.js":1166,"../util/clone.js":1168,"./util.js":1147,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/slicedToArray":21}],1147:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -225093,7 +225557,7 @@ var _validate = require("../types/validate.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/util.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/util.js';
  * console.log(Monster.DOM.getDocument())
  * </script>
  * ```
@@ -225102,7 +225566,7 @@ var _validate = require("../types/validate.js");
  *
  * ```
  * <script type="module">
- * import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/util.js';
+ * import {getDocument} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/util.js';
  * console.log(getDocument())
  * </script>
  * ```
@@ -225156,7 +225620,7 @@ function getDocument() {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/util.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/util.js';
  * console.log(Monster.DOM.getWindow())
  * </script>
  * ```
@@ -225165,7 +225629,7 @@ function getDocument() {
  *
  * ```
  * <script type="module">
- * import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/util.js';
+ * import {getWindow} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/util.js';
  * console.log(getWindow(null))
  * </script>
  * ```
@@ -225225,7 +225689,7 @@ function getWindow() {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/util.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/util.js';
  * console.log(Monster.DOM.getDocumentFragmentFromString())
  * </script>
  * ```
@@ -225234,7 +225698,7 @@ function getWindow() {
  *
  * ```
  * <script type="module">
- * import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/dom/util.js';
+ * import {getDocumentFragmentFromString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/dom/util.js';
  * console.log(getDocumentFragmentFromString('<div></div>'))
  * </script>
  * ```
@@ -225285,7 +225749,7 @@ function getDocumentFragmentFromString(html) {
 
 _global.Monster.assignToNamespace('Monster.DOM', getWindow, getDocument, getDocumentFragmentFromString);
 
-},{"../types/global.js":1153,"../types/validate.js":1165,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1147:[function(require,module,exports){
+},{"../types/global.js":1154,"../types/validate.js":1166,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1148:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -225333,7 +225797,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/logging/handler.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/logging/handler.js';
  * console.log(new Monster.Logging.Handler())
  * </script>
  * ```
@@ -225342,7 +225806,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/logging/handler.js';
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/logging/handler.js';
  * console.log(new Handler())
  * </script>
  * ```
@@ -225531,7 +225995,7 @@ exports.Handler = Handler;
 
 _namespace.Monster.assignToNamespace('Monster.Logging', Handler);
 
-},{"../namespace.js":1151,"../types/base.js":1152,"../types/validate.js":1165,"./logentry.js":1148,"./logger.js":1149,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1148:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/base.js":1153,"../types/validate.js":1166,"./logentry.js":1149,"./logger.js":1150,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1149:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -225575,7 +226039,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/logging/logentry.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/logging/logentry.js';
  * console.log(new Monster.Logging.LogEntry())
  * </script>
  * ```
@@ -225584,7 +226048,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/logging/logentry.js';
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/logging/logentry.js';
  * console.log(new LogEntry())
  * </script>
  * ```
@@ -225647,7 +226111,7 @@ exports.LogEntry = LogEntry;
 
 _namespace.Monster.assignToNamespace('Monster.Logging', LogEntry);
 
-},{"../namespace.js":1151,"../types/base.js":1152,"../types/validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1149:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/base.js":1153,"../types/validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1150:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -225763,7 +226227,7 @@ var OFF = 0;
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/logging/logger.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/logging/logger.js';
  * console.log(new Monster.Logging.Logger())
  * </script>
  * ```
@@ -225772,7 +226236,7 @@ var OFF = 0;
  *
  * ```
  * <script type="module">
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/logging/logger.js';
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/logging/logger.js';
  * console.log(new Logger())
  * </script>
  * ```
@@ -226018,7 +226482,7 @@ function triggerLog(loglevel) {
   return logger;
 }
 
-},{"../logging/handler.js":1147,"../logging/logentry.js":1148,"../namespace.js":1151,"../types/base.js":1152,"../types/validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1150:[function(require,module,exports){
+},{"../logging/handler.js":1148,"../logging/logentry.js":1149,"../namespace.js":1152,"../types/base.js":1153,"../types/validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1151:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -226044,7 +226508,7 @@ var _global = require("../types/global.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/math/random.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/math/random.js';
  * console.log(Monster.Math.random(1,10)) // ↦ 5
  * </script>
  * ```
@@ -226053,7 +226517,7 @@ var _global = require("../types/global.js");
  *
  * ```
  * <script type="module">
- * import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/math/random.js';
+ * import {random} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/math/random.js';
  * console.log(random(1,10)) // ↦ 5
  * </script>
  * ```
@@ -226145,7 +226609,7 @@ function create(min, max) {
 
 _global.Monster.assignToNamespace('Monster.Math', random);
 
-},{"../types/global.js":1153}],1151:[function(require,module,exports){
+},{"../types/global.js":1154}],1152:[function(require,module,exports){
 'use strict';
 /**
  * @namespace Monster
@@ -226237,7 +226701,7 @@ assignToNamespace('Monster', assignToNamespace);
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/namespace.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/namespace.js';
  * function hello() {
  *            console.log('Hello World!');
  *        }
@@ -226327,7 +226791,7 @@ function namespaceFor(parts) {
   return space;
 }
 
-},{"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12}],1152:[function(require,module,exports){
+},{"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12}],1153:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -226371,7 +226835,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/base.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/base.js';
  * console.log(new Monster.Types.Base())
  * console.log(new Monster.Types.Base())
  * </script>
@@ -226381,7 +226845,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Object} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/base.js';
+ * import {Object} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/base.js';
  * console.log(new Base())
  * console.log(new Base())
  * </script>
@@ -226421,7 +226885,7 @@ exports.Base = Base;
 
 _namespace.Monster.assignToNamespace('Monster.Types', Base);
 
-},{"../namespace.js":1151,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/wrapNativeSuper":26}],1153:[function(require,module,exports){
+},{"../namespace.js":1152,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/wrapNativeSuper":26}],1154:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -226494,7 +226958,7 @@ function getGlobal() {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/global.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/global.js';
  * console.log(Monster.Types.getGlobalObject('document')) // ↦ { }
  * </script>
  * ```
@@ -226503,7 +226967,7 @@ function getGlobal() {
  *
  * ```
  * <script type="module">
- * import {getGlobalObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/global.js';
+ * import {getGlobalObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/global.js';
  * console.log(getGlobalObject('document')) // ↦ { }
  * </script>
  * ```
@@ -226534,7 +226998,7 @@ function getGlobalObject(name) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/global.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/global.js';
  * console.log(Monster.Types.getGlobalFunction('parseInt')) // ↦ f parseInt() { }
  * </script>
  * ```
@@ -226543,7 +227007,7 @@ function getGlobalObject(name) {
  *
  * ```
  * <script type="module">
- * import {getGlobalFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/global.js';
+ * import {getGlobalFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/global.js';
  * console.log(getGlobalFunction('parseInt')) // ↦ f parseInt() { }
  * </script>
  * ```
@@ -226570,7 +227034,7 @@ function getGlobalFunction(name) {
 
 _namespace.Monster.assignToNamespace('Monster.Types', getGlobal, getGlobalObject, getGlobalFunction);
 
-},{"../namespace.js":1151,"./validate.js":1165,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1154:[function(require,module,exports){
+},{"../namespace.js":1152,"./validate.js":1166,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1155:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -226623,7 +227087,7 @@ var internalCounter = new Map();
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/id.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/id.js';
  * console.log(new Monster.Types.ID())
  * </script>
  * ```
@@ -226632,7 +227096,7 @@ var internalCounter = new Map();
  *
  * ```
  * <script type="module">
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/id.js';
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/id.js';
  * console.log(new ID())
  * </script>
  * ```
@@ -226691,7 +227155,7 @@ exports.ID = ID;
 
 _base.Monster.assignToNamespace('Monster.Types', ID);
 
-},{"./base.js":1152,"./validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1155:[function(require,module,exports){
+},{"./base.js":1153,"./validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1156:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -226729,7 +227193,7 @@ var _namespace = require("../namespace.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isIterable(null)) // ↦ false
  * console.log(Monster.Types.isIterable('hello')) // ↦ true
  * console.log(Monster.Types.isIterable([])) // ↦ true
@@ -226740,7 +227204,7 @@ var _namespace = require("../namespace.js");
  *
  * ```
  * <script type="module">
- * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isIterable(null))  // ↦ false
  * console.log(isIterable('hello'))  // ↦ true
  * console.log(isIterable([]))  // ↦ true
@@ -226765,7 +227229,7 @@ function isIterable(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isPrimitive('2')) // ↦ false
  * console.log(Monster.Types.isPrimitive([])) // ↦ true
  * </script>
@@ -226775,7 +227239,7 @@ function isIterable(value) {
  *
  * ```
  * <script type="module">
- * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isPrimitive('2'))  // ↦ true
  * console.log(isPrimitive([]))  // ↦ false
  * </script>
@@ -226811,7 +227275,7 @@ function isPrimitive(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isBoolean('2')) // ↦ false
  * console.log(Monster.Types.isBoolean([])) // ↦ false
  * console.log(Monster.Types.isBoolean(true)) // ↦ true
@@ -226822,7 +227286,7 @@ function isPrimitive(value) {
  *
  * ```
  * <script type="module">
- * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isBoolean('2'))  // ↦ false
  * console.log(isBoolean([]))  // ↦ false
  * console.log(isBoolean(2>4))  // ↦ true
@@ -226851,7 +227315,7 @@ function isBoolean(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isString('2')) // ↦ true
  * console.log(Monster.Types.isString([])) // ↦ false
  * </script>
@@ -226861,7 +227325,7 @@ function isBoolean(value) {
  *
  * ```
  * <script type="module">
- * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isString('2'))  // ↦ true
  * console.log(isString([]))  // ↦ false
  * </script>
@@ -226889,7 +227353,7 @@ function isString(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isObject('2')) // ↦ false
  * console.log(Monster.Types.isObject([])) // ↦ false
  * console.log(Monster.Types.isObject({})) // ↦ true
@@ -226900,7 +227364,7 @@ function isString(value) {
  *
  * ```
  * <script type="module">
- * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isObject('2'))  // ↦ false
  * console.log(isObject([]))  // ↦ false
  * </script>
@@ -226931,7 +227395,7 @@ function isObject(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isInstance('2')) // ↦ false
  * console.log(Monster.Types.isInstance([])) // ↦ false
  * console.log(Monster.Types.isInstance({})) // ↦ true
@@ -226942,7 +227406,7 @@ function isObject(value) {
  *
  * ```
  * <script type="module">
- * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isInstance('2'))  // ↦ false
  * console.log(isInstance([]))  // ↦ false
  * </script>
@@ -226970,7 +227434,7 @@ function isInstance(value, instance) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isArray('2')) // ↦ false
  * console.log(Monster.Types.isArray([])) // ↦ true
  * </script>
@@ -226980,7 +227444,7 @@ function isInstance(value, instance) {
  *
  * ```
  * <script type="module">
- * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isArray('2'))  // ↦ false
  * console.log(isArray([]))  // ↦ true
  * </script>
@@ -227008,7 +227472,7 @@ function isArray(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isFunction(()=>{})) // ↦ true
  * console.log(Monster.Types.isFunction('2')) // ↦ false
  * console.log(Monster.Types.isFunction([])) // ↦ false
@@ -227019,7 +227483,7 @@ function isArray(value) {
  *
  * ```
  * <script type="module">
- * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isFunction(()=>{})) // ↦ true
  * console.log(isFunction('2'))  // ↦ false
  * console.log(isFunction([]))  // ↦ false
@@ -227051,7 +227515,7 @@ function isFunction(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(Monster.Types.isInteger(()=>{})) // ↦ true
  * console.log(Monster.Types.isInteger('2')) // ↦ false
  * console.log(Monster.Types.isInteger(2)) // ↦ true
@@ -227062,7 +227526,7 @@ function isFunction(value) {
  *
  * ```
  * <script type="module">
- * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {isInteger} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * console.log(isInteger(()=>{})) // ↦ true
  * console.log(isInteger('2'))  // ↦ false
  * console.log(isInteger(2))  // ↦ true
@@ -227083,7 +227547,7 @@ function isInteger(value) {
 
 _namespace.Monster.assignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction, isIterable, isInteger);
 
-},{"../namespace.js":1151,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1156:[function(require,module,exports){
+},{"../namespace.js":1152,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1157:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -227133,7 +227597,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/observer.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/observer.js';
  * console.log(new Monster.Types.Observer())
  * </script>
  * ```
@@ -227142,7 +227606,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/observer.js';
+ * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/observer.js';
  * console.log(new Observer())
  * </script>
  * ```
@@ -227176,7 +227640,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * @example
  *
- * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/observer.js';
+ * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/observer.js';
  *
  * const observer = new Observer(function(a, b, c) {
  *      console.log(this, a, b, c); // ↦ "a", 2, true 
@@ -227315,7 +227779,7 @@ exports.Observer = Observer;
 
 _namespace.Monster.assignToNamespace('Monster.Types', Observer);
 
-},{"../namespace.js":1151,"./base.js":1152,"./is.js":1155,"./tokenlist.js":1162,"./uniquequeue.js":1164,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1157:[function(require,module,exports){
+},{"../namespace.js":1152,"./base.js":1153,"./is.js":1156,"./tokenlist.js":1163,"./uniquequeue.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1158:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -227363,7 +227827,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/observerlist.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/observerlist.js';
  * console.log(new Monster.Types.ObserverList())
  * console.log(new Monster.Types.ObserverList())
  * </script>
@@ -227373,7 +227837,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/observerlist.js';
+ * import {ObserverList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/observerlist.js';
  * console.log(ObserverList())
  * console.log(ObserverList())
  * </script>
@@ -227485,7 +227949,7 @@ exports.ObserverList = ObserverList;
 
 _namespace.Monster.assignToNamespace('Monster.Types', ObserverList);
 
-},{"../namespace.js":1151,"./base.js":1152,"./observer.js":1156,"./validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1158:[function(require,module,exports){
+},{"../namespace.js":1152,"./base.js":1153,"./observer.js":1157,"./validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1159:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -227541,7 +228005,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/proxyobserver.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/proxyobserver.js';
  * console.log(new Monster.Types.ProxyObserver())
  * </script>
  * ```
@@ -227550,7 +228014,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/proxyobserver.js';
+ * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/proxyobserver.js';
  * console.log(new ProxyObserver())
  * </script>
  * ```
@@ -227561,9 +228025,9 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * @example 
  *
- * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/proxyobserver.js';
- * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/observer.js';
- * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/is.js';
+ * import {ProxyObserver} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/proxyobserver.js';
+ * import {Observer} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/observer.js';
+ * import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/is.js';
  * 
  * const o = new Observer(function () { 
  *   if (isObject(this) && this instanceof ProxyObserver) {
@@ -227779,7 +228243,7 @@ function getHandler() {
   return handler;
 }
 
-},{"../namespace.js":1151,"./base.js":1152,"./is.js":1155,"./observer.js":1156,"./observerlist.js":1157,"./validate.js":1165,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/typeof":24}],1159:[function(require,module,exports){
+},{"../namespace.js":1152,"./base.js":1153,"./is.js":1156,"./observer.js":1157,"./observerlist.js":1158,"./validate.js":1166,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/typeof":24}],1160:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -227816,7 +228280,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/queue.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/queue.js';
  * console.log(new Monster.Types.Queue())
  * </script>
  * ```
@@ -227825,14 +228289,14 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/queue.js';
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/queue.js';
  * console.log(new Queue())
  * </script>
  * ```
  * 
  * @example
  *
- * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/queue.js';
+ * import {Queue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/queue.js';
  *
  * const queue = new Queue;
  *
@@ -227947,7 +228411,7 @@ exports.Queue = Queue;
 
 _base.Monster.assignToNamespace('Monster.Types', Queue);
 
-},{"./base.js":1152,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1160:[function(require,module,exports){
+},{"./base.js":1153,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1161:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -227994,7 +228458,7 @@ var internalCounter = 0;
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/randomid.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/randomid.js';
  * console.log(new Monster.Types.RandomID())
  * </script>
  * ```
@@ -228003,7 +228467,7 @@ var internalCounter = 0;
  *
  * ```
  * <script type="module">
- * import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/randomid.js';
+ * import {RandomID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/randomid.js';
  * console.log(new RandomID())
  * </script>
  * ```
@@ -228040,7 +228504,7 @@ exports.RandomID = RandomID;
 
 _id.Monster.assignToNamespace('Monster.Types', RandomID);
 
-},{"../math/random.js":1150,"./global.js":1153,"./id.js":1154,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1161:[function(require,module,exports){
+},{"../math/random.js":1151,"./global.js":1154,"./id.js":1155,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1162:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -228077,7 +228541,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/stack.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/stack.js';
  * console.log(new Monster.Types.Stack())
  * </script>
  * ```
@@ -228086,7 +228550,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/stack.js';
+ * import {ID} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/stack.js';
  * console.log(new Stack())
  * </script>
  * ```
@@ -228188,7 +228652,7 @@ exports.Stack = Stack;
 
 _base.Monster.assignToNamespace('Monster.Types', Stack);
 
-},{"./base.js":1152,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1162:[function(require,module,exports){
+},{"./base.js":1153,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1163:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -228244,7 +228708,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/tokenlist.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/tokenlist.js';
  * console.log(new Monster.Types.TokenList("myclass row"))
  * console.log(new Monster.Types.TokenList("myclass row"))
  * </script>
@@ -228254,7 +228718,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/tokenlist.js';
+ * import {TokenList} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/tokenlist.js';
  * console.log(new TokenList("myclass row"))
  * console.log(new TokenList("myclass row"))
  * </script>
@@ -228624,7 +229088,7 @@ function toggleValue(token) {
 
 _namespace.Monster.assignToNamespace('Monster.Types', TokenList);
 
-},{"../namespace.js":1151,"../types/is.js":1155,"../types/validate.js":1165,"./base.js":1152,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1163:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/is.js":1156,"../types/validate.js":1166,"./base.js":1153,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1164:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -228650,7 +229114,7 @@ var _namespace = require("../namespace.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/typeof.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/typeof.js';
  * console.log(Monster.Types.typeOf())
  * </script>
  * ```
@@ -228659,14 +229123,14 @@ var _namespace = require("../namespace.js");
  *
  * ```
  * <script type="module">
- * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/typeof.js';
+ * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/typeof.js';
  * console.log(typeOf())
  * </script>
  * ```
  *
  * @example
  *
- * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/typeof.js';
+ * import {typeOf} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/typeof.js';
  *
  * console.log(typeOf(undefined)); // ↦ undefined
  * console.log(typeOf("")); // ↦ string
@@ -228696,7 +229160,7 @@ function typeOf(value) {
 
 _namespace.Monster.assignToNamespace('Monster.Types', typeOf);
 
-},{"../namespace.js":1151}],1164:[function(require,module,exports){
+},{"../namespace.js":1152}],1165:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -228737,7 +229201,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/uniquequeue.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/uniquequeue.js';
  * console.log(new Monster.Types.UniqueQueue())
  * </script>
  * ```
@@ -228746,7 +229210,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/uniquequeue.js';
+ * import {UniqueQueue} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/uniquequeue.js';
  * console.log(new UniqueQueue())
  * </script>
  * ```
@@ -228831,7 +229295,7 @@ exports.UniqueQueue = UniqueQueue;
 
 _queue.Monster.assignToNamespace('Monster.Types', UniqueQueue);
 
-},{"./queue.js":1159,"./validate.js":1165,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/get":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1165:[function(require,module,exports){
+},{"./queue.js":1160,"./validate.js":1166,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/get":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1166:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -228867,7 +229331,7 @@ var _is = require("./is.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateIterable('2')) // ↦ TypeError
  * console.log(Monster.Types.validateIterable([])) // ↦ undefined
  * </script>
@@ -228877,7 +229341,7 @@ var _is = require("./is.js");
  *
  * ```
  * <script type="module">
- * import {validateIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateIterable} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateIterable('2'))  // ↦ TypeError
  * console.log(validateIterable([]))  // ↦ undefined
  * </script>
@@ -228907,7 +229371,7 @@ function validateIterable(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validatePrimitive('2')) // ↦ undefined
  * console.log(Monster.Types.validatePrimitive([])) // ↦ TypeError
  * </script>
@@ -228917,7 +229381,7 @@ function validateIterable(value) {
  *
  * ```
  * <script type="module">
- * import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validatePrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validatePrimitive('2'))  // ↦ undefined
  * console.log(validatePrimitive([]))  // ↦ TypeError
  * </script>
@@ -228949,7 +229413,7 @@ function validatePrimitive(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateBoolean(true)) // ↦ undefined
  * console.log(Monster.Types.validateBoolean('2')) // ↦ TypeError
  * console.log(Monster.Types.validateBoolean([])) // ↦ TypeError
@@ -228960,7 +229424,7 @@ function validatePrimitive(value) {
  *
  * ```
  * <script type="module">
- * import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateBoolean(false))  // ↦ undefined
  * console.log(validateBoolean('2'))  // ↦ TypeError
  * console.log(validateBoolean([]))  // ↦ TypeError
@@ -228991,7 +229455,7 @@ function validateBoolean(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateString('2')) // ↦ undefined
  * console.log(Monster.Types.validateString([])) // ↦ TypeError
  * </script>
@@ -229001,7 +229465,7 @@ function validateBoolean(value) {
  *
  * ```
  * <script type="module">
- * import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateString('2'))  // ↦ undefined
  * console.log(validateString([]))  // ↦ TypeError
  * </script>
@@ -229030,7 +229494,7 @@ function validateString(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateObject({})) // ↦ undefined
  * console.log(Monster.Types.validateObject('2')) // ↦ TypeError
  * console.log(Monster.Types.validateObject([])) // ↦ TypeError
@@ -229041,7 +229505,7 @@ function validateString(value) {
  *
  * ```
  * <script type="module">
- * import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateObject({}))  // ↦ undefined
  * console.log(validateObject('2'))  // ↦ TypeError
  * console.log(validateObject([]))  // ↦ TypeError
@@ -229071,7 +229535,7 @@ function validateObject(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateInstance({}, Object)) // ↦ undefined
  * console.log(Monster.Types.validateInstance('2', Object)) // ↦ TypeError
  * console.log(Monster.Types.validateInstance([], Object)) // ↦ TypeError
@@ -229082,7 +229546,7 @@ function validateObject(value) {
  *
  * ```
  * <script type="module">
- * import {validateInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateInstance} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateInstance({}, Object)) // ↦ undefined
  * console.log(validateInstance('2', Object)) // ↦ TypeError
  * console.log(validateInstance([], Object)) // ↦ TypeError
@@ -229122,7 +229586,7 @@ function validateInstance(value, instance) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateArray('2')) // ↦ TypeError
  * console.log(Monster.Types.validateArray([])) // ↦ undefined
  * </script>
@@ -229132,7 +229596,7 @@ function validateInstance(value, instance) {
  *
  * ```
  * <script type="module">
- * import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateArray('2'))  // ↦ TypeError
  * console.log(validateArray([]))  // ↦ undefined
  * </script>
@@ -229161,7 +229625,7 @@ function validateArray(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateFunction(()=>{})) // ↦ undefined
  * console.log(Monster.Types.validateFunction('2')) // ↦ TypeError
  * console.log(Monster.Types.validateFunction([])) // ↦ TypeError
@@ -229172,7 +229636,7 @@ function validateArray(value) {
  *
  * ```
  * <script type="module">
- * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateFunction(()=>{})) // ↦ undefined
  * console.log(validateFunction('2'))  // ↦ TypeError
  * console.log(validateFunction([]))  // ↦ TypeError
@@ -229202,7 +229666,7 @@ function validateFunction(value) {
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(Monster.Types.validateInteger(true)) // ↦ TypeError
  * console.log(Monster.Types.validateInteger('2')) // ↦ TypeError
  * console.log(Monster.Types.validateInteger(2)) // ↦ undefined
@@ -229213,7 +229677,7 @@ function validateFunction(value) {
  *
  * ```
  * <script type="module">
- * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/validate.js';
+ * import {validateFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/validate.js';
  * console.log(validateInteger(true)) // ↦ TypeError
  * console.log(validateInteger('2'))  // ↦ TypeError
  * console.log(validateInteger(2))  // ↦ undefined
@@ -229239,7 +229703,7 @@ function validateInteger(value) {
 
 _namespace.Monster.assignToNamespace('Monster.Types', validatePrimitive, validateBoolean, validateString, validateObject, validateArray, validateFunction, validateIterable, validateInteger);
 
-},{"../namespace.js":1151,"./is.js":1155}],1166:[function(require,module,exports){
+},{"../namespace.js":1152,"./is.js":1156}],1167:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -229281,7 +229745,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/version.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/version.js';
  * console.log(new Monster.Types.Version('1.2.3')) // ↦ 1.2.3
  * console.log(new Monster.Types.Version('1')) // ↦ 1.0.0
  * </script>
@@ -229291,7 +229755,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/version.js';
+ * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/version.js';
  * console.log(new Version('1.2.3')) // ↦ 1.2.3
  * console.log(new Version('1')) // ↦ 1.0.0
  * </script>
@@ -229299,7 +229763,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * @example
  *
- * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/version.js';
+ * import {Version} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/version.js';
  *
  * new Version('1.0.0') // ↦ 1.0.0
  * new Version(1)  // ↦ 1.0.0
@@ -229432,7 +229896,7 @@ var monsterVersion;
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/version.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/version.js';
  * console.log(Monster.getVersion())
  * console.log(Monster.getVersion())
  * </script>
@@ -229442,7 +229906,7 @@ var monsterVersion;
  *
  * ```
  * <script type="module">
- * import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/types/version.js';
+ * import {getVersion} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/types/version.js';
  * console.log(getVersion())
  * console.log(getVersion())
  * </script>
@@ -229462,7 +229926,7 @@ function getVersion() {
   /**#@+ dont touch, replaced by make with package.json version */
 
 
-  monsterVersion = new Version('1.8.0');
+  monsterVersion = new Version('1.9.0');
   /**#@-*/
 
   return monsterVersion;
@@ -229470,7 +229934,7 @@ function getVersion() {
 
 _namespace.Monster.assignToNamespace('Monster', getVersion);
 
-},{"../namespace.js":1151,"./base.js":1152,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1167:[function(require,module,exports){
+},{"../namespace.js":1152,"./base.js":1153,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19}],1168:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -229510,7 +229974,7 @@ var _global = require("../types/global.js");
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/util/clone.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/util/clone.js';
  * console.log(Monster.Util.clone({}))
  * </script>
  * ```
@@ -229519,7 +229983,7 @@ var _global = require("../types/global.js");
  *
  * ```
  * <script type="module">
- * import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/util/clone.js';
+ * import {clone} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/util/clone.js';
  * console.log(clone({}))
  * </script>
  * ```
@@ -229635,7 +230099,7 @@ function cloneObject(obj) {
 
 _namespace.Monster.assignToNamespace('Monster.Util', clone);
 
-},{"../namespace.js":1151,"../types/global.js":1153,"../types/is.js":1155,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1168:[function(require,module,exports){
+},{"../namespace.js":1152,"../types/global.js":1154,"../types/is.js":1156,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],1169:[function(require,module,exports){
 'use strict';
 /**
  * @author schukai GmbH
@@ -229679,7 +230143,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/util/comparator.js';
+ * import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/util/comparator.js';
  * console.log(new Monster.Util.Comparator())
  * </script>
  * ```
@@ -229688,7 +230152,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  *
  * ```
  * <script type="module">
- * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/util/comparator.js';
+ * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/util/comparator.js';
  * console.log(new Comparator())
  * </script>
  * ```
@@ -229713,7 +230177,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
  * 
  * @example
  *
- * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.8.0/dist/modules/util/comparator.js';
+ * import {Comparator} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.9.0/dist/modules/util/comparator.js';
  *
  * console.log(new Comparator().lessThanOrEqual(2, 5))
  * // ↦ true
@@ -229862,7 +230326,7 @@ exports.Comparator = Comparator;
 
 _base.Monster.assignToNamespace('Monster.Util', Comparator);
 
-},{"../types/base.js":1152,"../types/is.js":1155,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/typeof":24}],1169:[function(require,module,exports){
+},{"../types/base.js":1153,"../types/is.js":1156,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/typeof":24}],1170:[function(require,module,exports){
 "use strict";
 
 var _valid = require("../../../source/constraints/valid.js");
@@ -229889,7 +230353,7 @@ describe('AndOperator', function () {
   });
 });
 
-},{"../../../source/constraints/andoperator.js":1128,"../../../source/constraints/invalid.js":1129,"../../../source/constraints/valid.js":1133}],1170:[function(require,module,exports){
+},{"../../../source/constraints/andoperator.js":1128,"../../../source/constraints/invalid.js":1129,"../../../source/constraints/valid.js":1133}],1171:[function(require,module,exports){
 "use strict";
 
 var _invalid = require("../../../source/constraints/invalid.js");
@@ -229908,7 +230372,7 @@ describe('Invalid', function () {
   });
 });
 
-},{"../../../source/constraints/invalid.js":1129,"chai":132}],1171:[function(require,module,exports){
+},{"../../../source/constraints/invalid.js":1129,"chai":132}],1172:[function(require,module,exports){
 "use strict";
 
 var _isarray = require("../../../source/constraints/isarray.js");
@@ -229929,7 +230393,7 @@ describe('IsArray', function () {
   });
 });
 
-},{"../../../source/constraints/isarray.js":1130,"chai":132}],1172:[function(require,module,exports){
+},{"../../../source/constraints/isarray.js":1130,"chai":132}],1173:[function(require,module,exports){
 "use strict";
 
 var _isobject = require("../../../source/constraints/isobject.js");
@@ -229950,7 +230414,7 @@ describe('IsObject', function () {
   });
 });
 
-},{"../../../source/constraints/isobject.js":1131,"chai":132}],1173:[function(require,module,exports){
+},{"../../../source/constraints/isobject.js":1131,"chai":132}],1174:[function(require,module,exports){
 "use strict";
 
 var _valid = require("../../../source/constraints/valid.js");
@@ -229977,7 +230441,7 @@ describe('OrOperator', function () {
   });
 });
 
-},{"../../../source/constraints/invalid.js":1129,"../../../source/constraints/oroperator.js":1132,"../../../source/constraints/valid.js":1133}],1174:[function(require,module,exports){
+},{"../../../source/constraints/invalid.js":1129,"../../../source/constraints/oroperator.js":1132,"../../../source/constraints/valid.js":1133}],1175:[function(require,module,exports){
 "use strict";
 
 var _valid = require("../../../source/constraints/valid.js");
@@ -229997,7 +230461,7 @@ describe('Valid', function () {
   });
 });
 
-},{"../../../source/constraints/valid.js":1133,"chai":132}],1175:[function(require,module,exports){
+},{"../../../source/constraints/valid.js":1133,"chai":132}],1176:[function(require,module,exports){
 "use strict";
 
 var _buildmap = require("../../../source/data/buildmap.js");
@@ -230087,7 +230551,7 @@ describe('buildMap', function () {
   });
 });
 
-},{"../../../source/data/buildmap.js":1134,"chai":132}],1176:[function(require,module,exports){
+},{"../../../source/data/buildmap.js":1134,"chai":132}],1177:[function(require,module,exports){
 "use strict";
 
 var _diff = require("../../../source/data/diff.js");
@@ -230168,7 +230632,7 @@ describe('Diff', function () {
   });
 });
 
-},{"../../../source/data/diff.js":1135,"../../../source/types/queue.js":1159,"chai":132}],1177:[function(require,module,exports){
+},{"../../../source/data/diff.js":1135,"../../../source/types/queue.js":1160,"chai":132}],1178:[function(require,module,exports){
 "use strict";
 
 var _pathfinder = require("../../../source/data/pathfinder.js");
@@ -230389,7 +230853,7 @@ describe('Pathfinder', function () {
   });
 });
 
-},{"../../../source/data/pathfinder.js":1136,"chai":132}],1178:[function(require,module,exports){
+},{"../../../source/data/pathfinder.js":1136,"chai":132}],1179:[function(require,module,exports){
 (function (global){(function (){
 "use strict";
 
@@ -230450,7 +230914,7 @@ describe('Pipe', function () {
 });
 
 }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"../../../source/data/pipe.js":1137,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1179:[function(require,module,exports){
+},{"../../../source/data/pipe.js":1137,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1180:[function(require,module,exports){
 (function (global){(function (){
 "use strict";
 
@@ -230560,7 +231024,7 @@ describe('Transformer', function () {
 });
 
 }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"../../../source/data/transformer.js":1138,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132,"jsdom":337}],1180:[function(require,module,exports){
+},{"../../../source/data/transformer.js":1138,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132,"jsdom":337}],1181:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -230626,7 +231090,83 @@ describe('Assembler', function () {
   });
 });
 
-},{"../../../source/dom/assembler.js":1139,"../../util/jsdom.js":1210,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1181:[function(require,module,exports){
+},{"../../../source/dom/assembler.js":1139,"../../util/jsdom.js":1212,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1182:[function(require,module,exports){
+'use strict';
+
+var _chai = require("chai");
+
+var _attributes = require("../../../source/dom/attributes.js");
+
+var _jsdom = require("../../util/jsdom.js");
+
+var html1 = "<div id=\"test1\"></div>";
+describe('Attributes', function () {
+  before(function (done) {
+    (0, _jsdom.initJSDOM)().then(function () {
+      done();
+    });
+  });
+  describe('Attributes', function () {
+    beforeEach(function () {
+      var mocks = document.getElementById('mocks');
+      mocks.innerHTML = html1;
+    });
+    afterEach(function () {
+      var mocks = document.getElementById('mocks');
+      mocks.innerHTML = "";
+    });
+    var atributeKey = 'data-test';
+    it('toggleAttributeToken(element, key, value)', function () {
+      var element = document.getElementById('test1');
+      (0, _chai.expect)(element.hasAttribute(atributeKey)).to.be["false"];
+      element.setAttribute(atributeKey, 'apple bananna');
+      (0, _attributes.toggleAttributeToken)(element, atributeKey, 'pinapple');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('apple bananna pinapple');
+      (0, _attributes.toggleAttributeToken)(element, atributeKey, 'pinapple');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('apple bananna');
+    });
+    it('addAttributeToken(element, key, value)', function () {
+      var element = document.getElementById('test1');
+      (0, _chai.expect)(element.hasAttribute(atributeKey)).to.be["false"];
+      (0, _attributes.addAttributeToken)(element, atributeKey, 'pinapple');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('pinapple');
+      (0, _attributes.addAttributeToken)(element, atributeKey, 'bananna');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('pinapple bananna');
+    });
+    it('removeAttributeToken(element, key, value)', function () {
+      var element = document.getElementById('test1');
+      element.setAttribute(atributeKey, 'apple bananna lemmon');
+      (0, _attributes.removeAttributeToken)(element, atributeKey, 'pinapple');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('apple bananna lemmon');
+      (0, _attributes.removeAttributeToken)(element, atributeKey, 'bananna');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('apple lemmon');
+    });
+    it('containsAttributeToken(element, key, value)', function () {
+      var element = document.getElementById('test1');
+      (0, _chai.expect)((0, _attributes.containsAttributeToken)(element, atributeKey, 'pinapple')).to.be["false"];
+      element.setAttribute(atributeKey, 'apple bananna');
+      (0, _chai.expect)((0, _attributes.containsAttributeToken)(element, atributeKey, 'pinapple')).to.be["false"];
+      (0, _chai.expect)((0, _attributes.containsAttributeToken)(element, atributeKey, 'bananna')).to.be["true"];
+      (0, _chai.expect)((0, _attributes.containsAttributeToken)(element, atributeKey, 'apple')).to.be["true"];
+    });
+    it(' replaceAttributeToken(element, key, value)', function () {
+      var element = document.getElementById('test1');
+      element.setAttribute(atributeKey, 'apple bananna tomato');
+      (0, _attributes.replaceAttributeToken)(element, atributeKey, 'tomato', 'lemmon');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('apple bananna lemmon');
+      (0, _attributes.replaceAttributeToken)(element, atributeKey, 'bananna', 'pear');
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('apple pear lemmon');
+    });
+    it('clearAttributeTokens(element, key)', function () {
+      var element = document.getElementById('test1');
+      element.setAttribute(atributeKey, 'apple bananna');
+      (0, _attributes.clearAttributeTokens)(element, atributeKey);
+      (0, _chai.expect)(element.getAttribute(atributeKey)).to.be.equal('');
+    });
+  });
+});
+
+},{"../../../source/dom/attributes.js":1140,"../../util/jsdom.js":1212,"chai":132}],1183:[function(require,module,exports){
 'use strict'; //
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -230702,7 +231242,7 @@ describe('DOM', function () {
   });
 });
 
-},{"../../../source/dom/customelement.js":1141,"../../util/jsdom.js":1210,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/typeof":24,"chai":132}],1182:[function(require,module,exports){
+},{"../../../source/dom/customelement.js":1142,"../../util/jsdom.js":1212,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"@babel/runtime/helpers/typeof":24,"chai":132}],1184:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -230785,7 +231325,7 @@ describe('Handle', function () {
   });
 });
 
-},{"../../../source/dom/handle.js":1142,"../../../source/dom/util.js":1146,"../../../source/types/global.js":1153,"../../../source/types/proxyobserver.js":1158,"../../util/jsdom.js":1210,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1183:[function(require,module,exports){
+},{"../../../source/dom/handle.js":1143,"../../../source/dom/util.js":1147,"../../../source/types/global.js":1154,"../../../source/types/proxyobserver.js":1159,"../../util/jsdom.js":1212,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1185:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -230842,7 +231382,7 @@ describe('Template', function () {
   });
 });
 
-},{"../../../source/dom/template.js":1143,"../../util/jsdom.js":1210,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1184:[function(require,module,exports){
+},{"../../../source/dom/template.js":1144,"../../util/jsdom.js":1212,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1186:[function(require,module,exports){
 'use strict';
 
 var _util = require("../../../source/dom/util.js");
@@ -230898,7 +231438,7 @@ describe('Theme', function () {
   });
 });
 
-},{"../../../source/dom/theme.js":1144,"../../../source/dom/util.js":1146,"../../util/jsdom.js":1210,"chai":132}],1185:[function(require,module,exports){
+},{"../../../source/dom/theme.js":1145,"../../../source/dom/util.js":1147,"../../util/jsdom.js":1212,"chai":132}],1187:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -230918,7 +231458,8 @@ var expect = _chai["default"].expect;
 _chai["default"].use(_chaiDom.chaiDom);
 
 var html1 = "\n    <template id=\"current\">\n        <li data-monster-replace=\"path:current | tojson\"></li>\n    </template>\n    <div id=\"test1\">\n        <ul data-monster-insert=\"current path:a.b\">\n        </ul>\n    </div>\n";
-var html2 = "\n    <div id=\"test1\">\n        <div data-monster-replace=\"path:text | tolower\"> </div>\n        <div data-monster-replace=\"path:text | call:myformatter\"> </div>\n    </div>\n";
+var html2 = "\n    <div id=\"test1\">\n        <div data-monster-replace=\"path:text | tolower\"> </div>\n        <div data-monster-replace=\"path:text | call:myformatter\"> </div>\n        <div data-monster-replace=\"static:hello\"></div>\n    </div>\n";
+var html3 = "\n\n<template id=\"myinnerid\">\n    <span data-monster-replace=\"path:myinnerid | tojson\"></span>\n</template>\n\n<template id=\"myid\">\n   <p data-monster-insert=\"myinnerid path:a.b\"></p>\n</template>\n\n<div id=\"test1\">\n    <div data-monster-insert=\"myid path:a.b\"></div>\n</div>\n\n";
 describe('DOM', function () {
   before(function (done) {
     (0, _jsdom.initJSDOM)().then(function () {
@@ -230933,9 +231474,6 @@ describe('DOM', function () {
     var mocks = document.getElementById('mocks');
     mocks.innerHTML = "";
   });
-  describe('Updater()', function () {
-    describe('Example code', function () {});
-  });
   describe('Updater()', function () {
     describe('test Errors', function () {
       it('should throw value is not an instance of HTMLElement Error', function () {
@@ -230943,10 +231481,10 @@ describe('DOM', function () {
           return new _updater.Updater();
         }).to["throw"](TypeError);
       });
-      it('should throw value is not an instance of HTMLElement Error', function () {
+      it('should throw value is wrong', function () {
         var element = document.getElementById('test1');
         expect(function () {
-          return new _updater.Updater(element);
+          return new _updater.Updater(element, null);
         }).to["throw"](TypeError);
       });
       it('should throw Error: the value is not iterable', function (done) {
@@ -231028,6 +231566,34 @@ describe('DOM', function () {
           expect((0, _typeof2["default"])(d)).is.equal('object');
           expect(element).contain.html('<div data-monster-replace="path:text | tolower">hallo</div>');
           expect(element).contain.html('<div data-monster-replace="path:text | call:myformatter">HALLOyes!</div>');
+          expect(element).contain.html('<div data-monster-replace="static:hello">hello</div>');
+          done();
+        })["catch"](function (e) {
+          done(new Error(e));
+        });
+      });
+    });
+  });
+  describe('Updater()', function () {
+    beforeEach(function () {
+      var mocks = document.getElementById('mocks');
+      mocks.innerHTML = html3;
+    });
+    describe('Replace', function () {
+      it('should ', function (done) {
+        var element = document.getElementById('test1');
+        var d = new _updater.Updater(element, {
+          a: {
+            b: [{
+              i: '0'
+            }]
+          }
+        });
+        d.run().then(function () {
+          expect((0, _typeof2["default"])(d)).is.equal('object');
+          expect(element).contain.html('<div data-monster-insert="myid path:a.b">');
+          expect(element).contain.html('<p data-monster-insert="myinnerid path:a.b" data-monster-insert-reference="myid-0">');
+          expect(element).contain.html('<span data-monster-replace="path:a.b.0 | tojson" data-monster-insert-reference="myinnerid-0">{"i":"0"}</span>');
           done();
         })["catch"](function (e) {
           done(new Error(e));
@@ -231037,7 +231603,7 @@ describe('DOM', function () {
   });
 });
 
-},{"../../../source/dom/updater.js":1145,"../../util/chai-dom.js":1209,"../../util/jsdom.js":1210,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1186:[function(require,module,exports){
+},{"../../../source/dom/updater.js":1146,"../../util/chai-dom.js":1211,"../../util/jsdom.js":1212,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1188:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -231098,7 +231664,7 @@ describe('DOM', function () {
   });
 });
 
-},{"../../../source/dom/util.js":1146,"../../util/jsdom.js":1210,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@babel/runtime/regenerator":28,"chai":132}],1187:[function(require,module,exports){
+},{"../../../source/dom/util.js":1147,"../../util/jsdom.js":1212,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@babel/runtime/regenerator":28,"chai":132}],1189:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -231269,7 +231835,7 @@ describe('Logging', function () {
   });
 });
 
-},{"../../../source/logging/handler.js":1147,"../../../source/logging/logentry.js":1148,"../../../source/logging/logger.js":1149,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/get":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"chai":132}],1188:[function(require,module,exports){
+},{"../../../source/logging/handler.js":1148,"../../../source/logging/logentry.js":1149,"../../../source/logging/logger.js":1150,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/get":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":19,"chai":132}],1190:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231300,7 +231866,7 @@ describe('Log', function () {
   });
 });
 
-},{"../../../source/logging/logentry.js":1148,"chai":132}],1189:[function(require,module,exports){
+},{"../../../source/logging/logentry.js":1149,"chai":132}],1191:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231363,7 +231929,7 @@ describe('Logging', function () {
   });
 });
 
-},{"../../../source/logging/logger.js":1149,"chai":132}],1190:[function(require,module,exports){
+},{"../../../source/logging/logger.js":1150,"chai":132}],1192:[function(require,module,exports){
 (function (global){(function (){
 "use strict";
 
@@ -231415,7 +231981,7 @@ describe('Math', function () {
 });
 
 }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"../../../source/math/random.js":1150,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1191:[function(require,module,exports){
+},{"../../../source/math/random.js":1151,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1193:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231427,7 +231993,7 @@ describe('Monster', function () {
     var monsterVersion;
     /**#@+ dont touch, replaced by make with package.json version */
 
-    monsterVersion = new _version.Version('1.8.0');
+    monsterVersion = new _version.Version('1.9.0');
     /**#@-*/
 
     var m = _version.Monster.getVersion();
@@ -231438,7 +232004,7 @@ describe('Monster', function () {
   });
 });
 
-},{"../../source/types/version.js":1166,"chai":132}],1192:[function(require,module,exports){
+},{"../../source/types/version.js":1167,"chai":132}],1194:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231456,7 +232022,7 @@ describe('Base', function () {
   });
 });
 
-},{"../../../source/types/base.js":1152,"chai":132}],1193:[function(require,module,exports){
+},{"../../../source/types/base.js":1153,"chai":132}],1195:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -231488,7 +232054,7 @@ describe('Global', function () {
   });
 });
 
-},{"../../../source/types/global.js":1153,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1194:[function(require,module,exports){
+},{"../../../source/types/global.js":1154,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1196:[function(require,module,exports){
 (function (global){(function (){
 "use strict";
 
@@ -231524,7 +232090,7 @@ describe('ID', function () {
 });
 
 }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"../../../source/types/id.js":1154,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1195:[function(require,module,exports){
+},{"../../../source/types/id.js":1155,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1197:[function(require,module,exports){
 (function (global){(function (){
 "use strict";
 
@@ -231636,7 +232202,7 @@ describe('Is', function () {
 });
 
 }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"../../../source/types/id.js":1154,"../../../source/types/is.js":1155,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1196:[function(require,module,exports){
+},{"../../../source/types/id.js":1155,"../../../source/types/is.js":1156,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1198:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231728,7 +232294,7 @@ describe('Observer', function () {
   });
 });
 
-},{"../../../source/types/observer.js":1156,"chai":132}],1197:[function(require,module,exports){
+},{"../../../source/types/observer.js":1157,"chai":132}],1199:[function(require,module,exports){
 "use strict";
 
 var _observerlist = require("../../../source/types/observerlist.js");
@@ -231805,7 +232371,7 @@ describe('ObserverList', function () {
   });
 });
 
-},{"../../../source/types/observer.js":1156,"../../../source/types/observerlist.js":1157,"chai":132}],1198:[function(require,module,exports){
+},{"../../../source/types/observer.js":1157,"../../../source/types/observerlist.js":1158,"chai":132}],1200:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231899,7 +232465,7 @@ describe('ProxyObserver', function () {
   });
 });
 
-},{"../../../source/types/is.js":1155,"../../../source/types/observer.js":1156,"../../../source/types/proxyobserver.js":1158,"chai":132}],1199:[function(require,module,exports){
+},{"../../../source/types/is.js":1156,"../../../source/types/observer.js":1157,"../../../source/types/proxyobserver.js":1159,"chai":132}],1201:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -231940,7 +232506,7 @@ describe('Queue', function () {
   });
 });
 
-},{"../../../source/types/queue.js":1159,"chai":132}],1200:[function(require,module,exports){
+},{"../../../source/types/queue.js":1160,"chai":132}],1202:[function(require,module,exports){
 (function (global){(function (){
 "use strict";
 
@@ -231971,7 +232537,7 @@ describe('RandomID', function () {
 });
 
 }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"../../../source/types/randomid.js":1160,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1201:[function(require,module,exports){
+},{"../../../source/types/randomid.js":1161,"@babel/runtime/helpers/typeof":24,"@peculiar/webcrypto":46,"chai":132}],1203:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -232012,7 +232578,7 @@ describe('Stack', function () {
   });
 });
 
-},{"../../../source/types/stack.js":1161,"chai":132}],1202:[function(require,module,exports){
+},{"../../../source/types/stack.js":1162,"chai":132}],1204:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -232209,7 +232775,7 @@ describe('TokenList', function () {
   });
 });
 
-},{"../../../source/types/tokenlist.js":1162,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24,"chai":132}],1203:[function(require,module,exports){
+},{"../../../source/types/tokenlist.js":1163,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/helpers/typeof":24,"chai":132}],1205:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -232244,7 +232810,7 @@ describe('typeOf', function () {
   });
 });
 
-},{"../../../source/types/stack.js":1161,"../../../source/types/typeof.js":1163,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1204:[function(require,module,exports){
+},{"../../../source/types/stack.js":1162,"../../../source/types/typeof.js":1164,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":28,"chai":132}],1206:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -232330,7 +232896,7 @@ describe('UniqueQueue', function () {
   });
 });
 
-},{"../../../source/types/uniquequeue.js":1164,"chai":132}],1205:[function(require,module,exports){
+},{"../../../source/types/uniquequeue.js":1165,"chai":132}],1207:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -232518,7 +233084,7 @@ describe('validate', function () {
   });
 });
 
-},{"../../../source/types/base.js":1152,"../../../source/types/id.js":1154,"../../../source/types/validate.js":1165,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1206:[function(require,module,exports){
+},{"../../../source/types/base.js":1153,"../../../source/types/id.js":1155,"../../../source/types/validate.js":1166,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1208:[function(require,module,exports){
 "use strict";
 
 var _version = require("../../../source/types/version.js");
@@ -232549,7 +233115,7 @@ describe('Version', function () {
   });
 });
 
-},{"../../../source/types/version.js":1166,"chai":132}],1207:[function(require,module,exports){
+},{"../../../source/types/version.js":1167,"chai":132}],1209:[function(require,module,exports){
 "use strict";
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -232661,7 +233227,7 @@ describe('Clone', function () {
   });
 });
 
-},{"../../../source/util/clone.js":1167,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1208:[function(require,module,exports){
+},{"../../../source/util/clone.js":1168,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"chai":132}],1210:[function(require,module,exports){
 "use strict";
 
 var _chai = require("chai");
@@ -232778,7 +233344,7 @@ describe('Comparator', function () {
   });
 });
 
-},{"../../../source/util/comparator.js":1168,"chai":132}],1209:[function(require,module,exports){
+},{"../../../source/util/comparator.js":1169,"chai":132}],1211:[function(require,module,exports){
 "use strict";
 
 Object.defineProperty(exports, "__esModule", {
@@ -233026,7 +233592,7 @@ function chaiDom(chai, utils) {
   });
 }
 
-},{}],1210:[function(require,module,exports){
+},{}],1212:[function(require,module,exports){
 'use strict';
 
 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -233079,7 +233645,7 @@ function initJSDOM() {
   });
 }
 
-},{"../../source/types/global.js":1153,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"jsdom":337}],1211:[function(require,module,exports){
+},{"../../source/types/global.js":1154,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"jsdom":337}],1213:[function(require,module,exports){
 "use strict";
 
 require("../cases/logging/logger.js");
@@ -233092,6 +233658,8 @@ require("../cases/dom/handle.js");
 
 require("../cases/dom/updater.js");
 
+require("../cases/dom/attributes.js");
+
 require("../cases/dom/template.js");
 
 require("../cases/dom/util.js");
@@ -233165,6 +233733,6 @@ require("../cases/monster.js");
 /** this file was created automatically by the make target test-browser-monster */
 SharedArrayBuffer = ArrayBuffer;
 
-},{"../cases/constraint/andoperator.js":1169,"../cases/constraint/invalid.js":1170,"../cases/constraint/isarray.js":1171,"../cases/constraint/isobject.js":1172,"../cases/constraint/oroperator.js":1173,"../cases/constraint/valid.js":1174,"../cases/data/buildmap.js":1175,"../cases/data/diff.js":1176,"../cases/data/pathfinder.js":1177,"../cases/data/pipe.js":1178,"../cases/data/transformer.js":1179,"../cases/dom/assembler.js":1180,"../cases/dom/customelement.js":1181,"../cases/dom/handle.js":1182,"../cases/dom/template.js":1183,"../cases/dom/theme.js":1184,"../cases/dom/updater.js":1185,"../cases/dom/util.js":1186,"../cases/logging/handler.js":1187,"../cases/logging/logentry.js":1188,"../cases/logging/logger.js":1189,"../cases/math/random.js":1190,"../cases/monster.js":1191,"../cases/types/base.js":1192,"../cases/types/global.js":1193,"../cases/types/id.js":1194,"../cases/types/is.js":1195,"../cases/types/observer.js":1196,"../cases/types/observerlist.js":1197,"../cases/types/proxyobserver.js":1198,"../cases/types/queue.js":1199,"../cases/types/randomid.js":1200,"../cases/types/stack.js":1201,"../cases/types/tokenlist.js":1202,"../cases/types/typeof.js":1203,"../cases/types/uniquequeue.js":1204,"../cases/types/validate.js":1205,"../cases/types/version.js":1206,"../cases/util/clone.js":1207,"../cases/util/comparator.js":1208}],1212:[function(require,module,exports){
+},{"../cases/constraint/andoperator.js":1170,"../cases/constraint/invalid.js":1171,"../cases/constraint/isarray.js":1172,"../cases/constraint/isobject.js":1173,"../cases/constraint/oroperator.js":1174,"../cases/constraint/valid.js":1175,"../cases/data/buildmap.js":1176,"../cases/data/diff.js":1177,"../cases/data/pathfinder.js":1178,"../cases/data/pipe.js":1179,"../cases/data/transformer.js":1180,"../cases/dom/assembler.js":1181,"../cases/dom/attributes.js":1182,"../cases/dom/customelement.js":1183,"../cases/dom/handle.js":1184,"../cases/dom/template.js":1185,"../cases/dom/theme.js":1186,"../cases/dom/updater.js":1187,"../cases/dom/util.js":1188,"../cases/logging/handler.js":1189,"../cases/logging/logentry.js":1190,"../cases/logging/logger.js":1191,"../cases/math/random.js":1192,"../cases/monster.js":1193,"../cases/types/base.js":1194,"../cases/types/global.js":1195,"../cases/types/id.js":1196,"../cases/types/is.js":1197,"../cases/types/observer.js":1198,"../cases/types/observerlist.js":1199,"../cases/types/proxyobserver.js":1200,"../cases/types/queue.js":1201,"../cases/types/randomid.js":1202,"../cases/types/stack.js":1203,"../cases/types/tokenlist.js":1204,"../cases/types/typeof.js":1205,"../cases/types/uniquequeue.js":1206,"../cases/types/validate.js":1207,"../cases/types/version.js":1208,"../cases/util/clone.js":1209,"../cases/util/comparator.js":1210}],1214:[function(require,module,exports){
 arguments[4][81][0].apply(exports,arguments)
-},{"dup":81}]},{},[1211]);
+},{"dup":81}]},{},[1213]);