docs: function protectConstructor(constructor) {
          var key,
              target,
              meta,
              prototype = constructor.prototype;
  
          obfuscateProperty(constructor, cacheKeyword, { properties: {}, methods: {} });
  
          for (key in constructor[$class].staticMethods) {
              protectStaticMethod(key, constructor[$class].staticMethods[key], constructor);
          }
  
          for (key in constructor[$class].staticProperties) {
              protectStaticProperty(key, constructor[$class].staticProperties[key], constructor);
          }
  
          // Prevent any properties/methods from being added and deleted to the constructor/prototype
          if (isFunction(Object.seal) && constructor[$class].locked && !constructor[$class].forceUnlocked) {
              Object.seal(constructor);
              Object.seal(prototype);
          }
      }