ClassSymbolImpl extends SymbolImpl implements ClassSymbol { @Override public boolean hasUnresolvedTypeHierarchy() { return hasUnresolvedTypeHierarchy(true); } ClassSymbolImpl(ClassDef classDef, @Nullable String fullyQualifiedName, PythonFile pythonFile);  ClassSymbolImpl(String name, @Nullable String fullyQualifiedName);  ClassSymbolImpl(String name, @Nullable String fullyQualifiedName, @Nullable LocationInFile definitionLocation,
                         boolean hasDecorators, boolean hasMetaClass, @Nullable String metaclassFQN); @Override List<Symbol> superClasses(); void addSuperClass(Symbol symbol); @Override boolean hasUnresolvedTypeHierarchy(); boolean hasUnresolvedTypeHierarchy(boolean includeAmbiguousSymbols); @Override Set<Symbol> declaredMembers(); @Override Optional<Symbol> resolveMember(String memberName); boolean hasMetaClass(); @Override boolean canHaveMember(String memberName); boolean hasSuperClassWithUnknownMetaClass(); @Override LocationInFile definitionLocation(); @Override boolean isOrExtends(String fullyQualifiedClassName); @Override boolean isOrExtends(ClassSymbol other); @Override boolean canBeOrExtend(String fullyQualifiedClassName); @Override boolean hasDecorators(); void addMembers(Collection<Symbol> members); void setHasSuperClassWithoutSymbol(); void setHasMetaClass(); void setMetaclassFQN(String metaclassFQN); @CheckForNull String metaclassFQN(); @Override void removeUsages();  }
@Test public void hasUnresolvedTypeHierarchy() { ClassSymbolImpl a = new ClassSymbolImpl("x", null); assertThat(a.hasUnresolvedTypeHierarchy()).isFalse(); ClassSymbolImpl b = new ClassSymbolImpl("x", null); b.addSuperClass(new ClassSymbolImpl("s", null)); assertThat(b.hasUnresolvedTypeHierarchy()).isFalse(); ClassSymbolImpl c = new ClassSymbolImpl("x", null); c.addSuperClass(new SymbolImpl("s", null)); assertThat(c.hasUnresolvedTypeHierarchy()).isTrue(); ClassSymbolImpl d = new ClassSymbolImpl("x", null); d.addSuperClass(c); assertThat(d.hasUnresolvedTypeHierarchy()).isTrue(); ClassSymbolImpl e = new ClassSymbolImpl("x", null); e.setHasSuperClassWithoutSymbol(); assertThat(e.hasUnresolvedTypeHierarchy()).isTrue(); ClassSymbolImpl f = new ClassSymbolImpl("x", null); Symbol g = new SymbolImpl("g", null); f.addSuperClass(g); assertThat(f.hasUnresolvedTypeHierarchy()).isTrue(); }