docs: private ReferenceType computeFirstCommonSuperclassOfSameDimensionArrays(ArrayType aArrType, ArrayType bArrType)
              throws ClassNotFoundException {
          assert aArrType.getDimensions() == bArrType.getDimensions();
  
          Type aBaseType = aArrType.getBasicType();
          Type bBaseType = bArrType.getBasicType();
          boolean aBaseIsObjectType = (aBaseType instanceof ObjectType);
          boolean bBaseIsObjectType = (bBaseType instanceof ObjectType);
  
          if (!aBaseIsObjectType || !bBaseIsObjectType) {
              assert (aBaseType instanceof BasicType) || (bBaseType instanceof BasicType);
  
              if (aArrType.getDimensions() > 1) {
                  // E.g.: first common supertype of int[][] and WHATEVER[][] is
                  // Object[]
                  return new ArrayType(Type.OBJECT, aArrType.getDimensions() - 1);
              } else {
                  assert aArrType.getDimensions() == 1;
                  // E.g.: first common supertype type of int[] and WHATEVER[] is
                  // Object
                  return Type.OBJECT;
              }
          } else {
              assert (aBaseType instanceof ObjectType);
              assert (bBaseType instanceof ObjectType);
  
              // Base types are both ObjectTypes, and number of dimensions is
              // same.
              // We just need to find the first common supertype of base types
              // and return a new ArrayType using that base type.
              ObjectType firstCommonBaseType = getFirstCommonSuperclass((ObjectType) aBaseType, (ObjectType) bBaseType);
              return new ArrayType(firstCommonBaseType, aArrType.getDimensions());
          }
      }