docs: function createConstructor(constructor, isAbstract) {
          var Instance = constructor || function Instance() {
              var x,
                  tmp;
  
              tmp = this.$static[$class];
  
              // Reset some types of the object in order for each instance to have their variables
              for (x = tmp.properties.length - 1; x >= 0; x -= 1) {
                  this[tmp.properties[x]] = deepClone(this[tmp.properties[x]]);
              }
  
              if (!tmp.efficient) {
                  this.$super = this.$self = null;  // Add the super & self to the instance object to speed lookup of the wrapper function
              }
  
              // Apply binds
              if (tmp.binds.length) {
                  applyBinds(tmp.binds, this, this);
              }
  
              // Call initialize
              this.initialize.apply(this, arguments);
          };
  
          if (!Instance[$class]) {
              obfuscateProperty(Instance, $class, { staticMethods: [], staticProperties: {}, properties: [], interfaces: [], binds: [] });
          }
  
          return Instance;
      }