docs: function inheritParent(constructor, parent) {
          var x,
              binds = parent[$class].binds,
              key,
              value;
  
          // Inherit binds
          for (x = binds.length - 1; x >= 0; x -= 1) {
              if (binds[x].substr(0, 2) !== '__') {
                  constructor[$class].binds.push(binds[x]);
              }
          }
  
          // Grab properties
          append(constructor[$class].properties, parent[$class].properties);
  
          // Inherit static methods and properties
          append(constructor[$class].staticMethods, parent[$class].staticMethods);
  
          for (x =  parent[$class].staticMethods.length - 1; x >= 0; x -= 1) {
              if (parent[$class].staticMethods[x].substr(0, 2) !== '__') {
                  constructor[parent[$class].staticMethods[x]] = parent[parent[$class].staticMethods[x]];
              }
          }
  
          for (key in parent[$class].staticProperties) {
              value = parent[$class].staticProperties[key];
  
              if (key.substr(0, 2) !== '__') {
                  constructor[$class].staticProperties[key] = value;
                  constructor[key] = value;
              }
          }
  
          obfuscateProperty(constructor, '$parent', parent);
  
          // Inherit implemented interfaces
          constructor[$class].interfaces = [].concat(parent[$class].interfaces);
      }