docs: private void addInheritanceEdge(ClassVertex vertex, ClassDescriptor superclassDescriptor, boolean isInterfaceEdge,
              @CheckForNull LinkedList<XClass> workList) {
          if (superclassDescriptor == null) {
              return;
          }
  
          ClassVertex superclassVertex = classDescriptorToVertexMap.get(superclassDescriptor);
          if (superclassVertex == null) {
              // Haven't encountered this class previously.
  
              XClass superclassXClass = AnalysisContext.currentXFactory().getXClass(superclassDescriptor);
              if (superclassXClass == null) {
                  // Inheritance graph will be incomplete.
                  // Add a dummy node to inheritance graph and report missing
                  // class.
                  superclassVertex = addClassVertexForMissingClass(superclassDescriptor, isInterfaceEdge);
              } else {
                  // Haven't seen this class before.
                  superclassVertex = ClassVertex.createResolvedClassVertex(superclassDescriptor, superclassXClass);
                  addVertexToGraph(superclassDescriptor, superclassVertex);
  
                  if (workList != null) {
                      // We'll want to recursively process the superclass.
                      workList.addLast(superclassXClass);
                  }
              }
          }
          assert superclassVertex != null;
  
          if (graph.lookupEdge(vertex, superclassVertex) == null) {
              if (DEBUG) {
                  System.out.println("  Add edge " + vertex.getClassDescriptor().toDottedClassName() + " -> "
                          + superclassDescriptor.toDottedClassName());
              }
              graph.createEdge(vertex, superclassVertex);
          }
      }