Reports classes which contain references to one of their subclasses. Such references may be confusing and violate several rules of object-oriented design.

Example:


  class Entity {
    // Warning: the class references its subclass
    void compare(SimpleEntity entity) {
      ...
    }
  }
  class SimpleEntity extends Entity {
    ...
  }