code: 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;
  
      }
docs: 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