docs: public Type getCommonSupertype() throws ClassNotFoundException {
          if (commonSupertype != null) {
              return commonSupertype;
          }
  
          if (isEmpty()) {
              // This probably means that we're looking at an
              // infeasible exception path.
              return TypeFrame.getTopType();
          }
  
          // Compute first common superclass
          ThrownExceptionIterator i = iterator();
          ReferenceType result = i.next();
          while (i.hasNext()) {
              if (Subtypes2.ENABLE_SUBTYPES2_FOR_COMMON_SUPERCLASS_QUERIES) {
                  result = AnalysisContext.currentAnalysisContext().getSubtypes2().getFirstCommonSuperclass(result, i.next());
              } else {
                  result = result.getFirstCommonSuperclass(i.next());
              }
              if (result == null) {
                  // This should only happen if the class hierarchy
                  // is incomplete. We'll just be conservative.
                  result = Type.THROWABLE;
                  break;
              }
          }
  
          // Cache and return the result
          commonSupertype = result;
          return result;
      }