docs: function handleInterfaces(interfs, target) {
          var interfaces = toArray(interfs),
              interf,
              x = interfaces.length,
              k,
              opts = { isConst: true };
  
          // Verify argument type
          if (!x && !isArray(interfs)) {
              throw new Error('$implements of class "' + target.prototype.$name + '" must be an interface or an array of interfaces.');
          }
          // Verify duplicate interfaces
          if (x !== unique(interfaces).length && compact(interfaces).length === x) {
              throw new Error('There are duplicate entries in $implements of class "' + target.prototype.$name + '".');
          }
  
          for (x -= 1; x >= 0; x -= 1) {
              interf = interfaces[x];
  
              // Verify if it's a valid interface
              if (!isFunction(interf) || !interf[$interface]) {
                  throw new Error('Entry at index ' + x + ' in $implements of class "' + target.prototype.$name + '" is not a valid interface.');
              }
  
              // Inherit constants and add interface to the interfaces array
              if (!contains(target[$class].interfaces, interf)) {
                  // Inherit constants
                  for (k in interf[$interface].constants) {
                      addProperty(k, interf[k], target, opts);
                  }
  
                  // Add to interfaces array
                  target[$class].interfaces.push(interf);
              }
  
              if (!target[$abstract]) {
                  interfaces[x][$interface].check(target);
              }
          }
      }