code: function isGeneral(GeneralClass, SpecificClass) {
    expect(arguments).to.have.length(
      2,
      'Invalid argument length when checking if a class is general of another ' +
      '(it has to be passed 2 arguments)'
    );
    expect(GeneralClass).to.be.a(
      'function',
      'Invalid argument "GeneralClass" when checking if a class is general of ' +
      'another (it has to be a function)'
    );
    expect(SpecificClass).to.be.a(
      'function',
      'Invalid argument "SpecificClass" when checking if a class is general ' +
      'of another (it has to be a function)'
    );
  
    var visitedClasses = [];
    var CurrentClass = SpecificClass;
  
    while (CurrentClass && visitedClasses.indexOf(CurrentClass) === -1) {
      if (CurrentClass === GeneralClass) {
        return true;
      }
  
      visitedClasses.push(CurrentClass);
      CurrentClass = CurrentClass.super_;
    }
  
    return false;
  }
docs: Checks if the GeneralClass generalizes the SpecificClass.
  @param {!Class} GeneralClass The general class to check.
  @param {!Class} SpecificClass The specific class to check.
  @example
  function GeneralClass() {}
  
  function SpecificClass() {
  GeneralClass.call(this);
  }
  
  classes.generalize(GeneralClass, SpecificClass);
  
  console.log(classes.isGeneral(GeneralClass, SpecificClass)); // Logs "true"
  
  console.log(classes.isGeneral(GeneralClass, GeneralClass)); // Logs "true"
  
  console.log(classes.isGeneral(SpecificClass, SpecificClass)); // Logs "true"
  
  console.log(classes.isGeneral(SpecificClass, GeneralClass)); // Logs "false"