/* Copyright 2014 Lcf.vs - Released under the MIT license - https://github.com/Lcfvs/reg-invoker */var regInvoker;(function(){"use strict";var e,t,n,r,i,s,o,u;e=Object.create.bind(Object);t=Object.defineProperty.bind(Object);n=Object.defineProperties.bind(Object);r=function(t){return i(t)};i=function(t,n,r,i){var u,a;u=r?r.fork(i):o();a=s(t,n,u,i);return t(a,u)};s=function(s,o,u,a){var f,l,u;f={};l={};l.parent=function(){return o};l.child=function(t){return f[t]};l.children=function(){return f};l.create=function(){return r(s)};l.copy=function(){return e(this)};l.fork=function(n){var r,o;if(n){r=i(s,this,u,n);o={value:r,enumerable:true};t(f,n,o)}else{r=i(s,this,u)}return r};l.getName=function(){return a};return l};o=function a(n,r){var i,s,o,u,f;i={};s={};o={};s.parent=function(){return n};s.child=function(t){return i[t]};s.children=function(){return i};s.create=function(){return a()};s.copy=function(){return e(this)};s.fork=function(n){var r;if(n){r=a(this,n);t(i,n,{value:r,enumerable:true});return r}return a()};u=s.init=function(t,n){var r;r=f(t);if(!r){o[t]=n}return o[t]};f=s.has=function(t){return o.hasOwnProperty(t)};s.get=function(t,n){var r;r=f(t);if(r){return o[t]}return n};s.set=function(t,n){o[t]=n;return this};s.add=function(t,n){var r;r=u(t,[]);r.push(n);return this};s.unset=function(t){delete o[t];return this};s.getName=function(){return r};return s};u=function(t){var i;n(t,{registry:{get:function(){return i=i||o()},enumerable:true},invoke:{value:r,enumerable:true}});return t};regInvoker=u(s(u));if(typeof module==="object"&&module.exports!==undefined){module.exports=regInvoker}})()

/* Copyright 2014 Lcf.vs - Released under the MIT license - https://github.com/Lcfvs/reg-invoker */var regInvoker;(function(){"use strict";var e,t,n,r,i,s,o,u;e=Object.create.bind(Object);t=Object.defineProperty.bind(Object);n=Object.defineProperties.bind(Object);r=function(t){return i(t,undefined,undefined)};i=function(t,n,r,i){var u,a;u=r?r.fork(i):o();a=s(t,n,u,i);return t(a,u)};s=function(s,o,u,a){var f,l;f={};l={};l.parent=function(){return o};l.child=function(t){return f[t]};l.children=function(){return f};l.create=function(){return r(s)};l.copy=function(){return e(this)};l.fork=function(n){var r,o;if(n){r=i(s,this,u,n);o={value:r,enumerable:true};t(f,n,o)}else{r=i(s,this,u)}return r};l.name=function(){return a};return l};o=function a(n,r){var i,o,u,f,l;i={};o={};u={};o.parent=function(){return n};o.child=function(t){return i[t]};o.children=function(){return i};o.create=function(){return a()};o.copy=function(){return e(this)};o.fork=function(n){var r;if(n){r=a(this,n);t(i,n,{value:r,enumerable:true});return r}return a()};f=o.init=function(t,n){var r;r=l(t);if(!r){u[t]=n}return u[t]};l=o.has=function(t){return u.hasOwnProperty(t)};o.get=function(t,n){var r;r=l(t);if(r){return u[t]}return n};o.set=function(t,n){u[t]=n;return this};o.add=function(t,n){var r;r=f(t,[]);r.push(n);return this};o.unset=function(t){delete u[t];return this};o.share=function(t,n){var r,i;r=n||a();i=s(t,undefined,r);return t(i,r)};o.name=function(){return r};return o};u=function(t){var i;n(t,{registry:{get:function(){return i=i||o()},enumerable:true},invoke:{value:r,enumerable:true}});return t};regInvoker=u(s(u));if(typeof module==="object"&&module.exports!==undefined){module.exports=regInvoker}})()

Add a registry.share() method