lib/nodesregistry.js
function(nodeName, objectOrBaseName, objectOrStatic, staticObject) {

        var explicitBase = typeof objectOrBaseName === 'string',
            baseName = explicitBase? objectOrBaseName : nodeName,
            staticObj = typeof objectOrBaseName !== 'string'? objectOrStatic: staticObject,
            obj = explicitBase? objectOrStatic : objectOrBaseName,
            base = baseName;

        if (typeof baseName === 'string') {
            base = baseName === nodeName? cache[baseName] : this.getNodeClass(baseName);
        }

        if (typeof objectOrStatic === 'function') {
            cache[nodeName] = objectOrStatic;
        } else {
            cache[nodeName] = base? INHERIT(base, obj, staticObj) : INHERIT(obj, staticObj);
        }

        return cache;

    }
function(nodeName, objectOrBaseName, objectOrStatic, staticObject) {

        var explicitBase = typeof objectOrBaseName === 'string',
            baseName = explicitBase? objectOrBaseName : nodeName,
            staticObj = typeof objectOrBaseName !== 'string'? objectOrStatic: staticObject,
            obj = explicitBase? objectOrStatic : objectOrBaseName,
            base = baseName;

        if (typeof baseName === 'string') {
            base = baseName === nodeName? cache[baseName] : this.getNodeClass(baseName);
        }

        if (typeof objectOrStatic === 'function') {
            cache[nodeName] = objectOrStatic;
        } else {
            cache[nodeName] = base? INHERIT(base, obj, staticObj) : INHERIT(obj, staticObj);
        }

        return cache;

    }
function ( nodeName , objectOrBaseName , objectOrStatic , staticObject ) { var explicitBase = typeof objectOrBaseName === 'string' , baseName = explicitBase ? objectOrBaseName : nodeName , staticObj = typeof objectOrBaseName !== 'string' ? objectOrStatic : staticObject , obj = explicitBase ? objectOrStatic : objectOrBaseName , base = baseName ; if ( typeof baseName === 'string' ) { base = baseName === nodeName ? cache [ baseName ] : this . getNodeClass ( baseName ) ; } if ( typeof objectOrStatic === 'function' ) { cache [ nodeName ] = objectOrStatic ; } else { cache [ nodeName ] = base ? INHERIT ( base , obj , staticObj ) : INHERIT ( obj , staticObj ) ; } return cache ; }
Calls INHERIT for specified parameters set and put the result into cache.

@param {String} nodeName Name of the node
@param {Object|String}  objectOrBaseName Object definition or name of the class to inherit from
@param {Object|Object} objectOrStatic Object with static members definition|object definition
@param {Object} staticObject Object with static members definition
@return {Object} cache
@private
Calls INHERIT for specified parameters set and put the result into cache .