@Test
 public void testVisitTryCatchBlock() {
   AsmClass sourceFileClass = asmClassProvider.getClass("tags/SourceFile");
   AsmClass tagExceptionClass = asmClassProvider.getClass("tags/TagException");
   AsmMethod readSourceFileMethod = sourceFileClass.getMethod("readSourceFile()V");
   assertThat(readSourceFileMethod.getDistinctUsedAsmClasses()).contains(tagExceptionClass);
 }
 @Test
 public void testVisitTypeInsn() {
   AsmClass sourceFileClass = asmClassProvider.getClass("tags/SourceFile");
   AsmMethod constructor = sourceFileClass.getMethod("<init>()V");
   assertThat(
           constructor
               .getDistinctUsedAsmClasses()
               .contains(asmClassProvider.getClass("java/util/ArrayList")))
       .isNotNull();
 }
  @Test
  public void testVisitMethod() {
    AsmClass asmClass = asmClassProvider.getClass("java/lang/String");
    assertThat(asmClass.getMethod("charAt(I)C")).isNotNull();
    assertThat(asmClass.getMethod("charAt(I)C").isPublic()).isTrue();
    assertThat(asmClass.getMethod("charAt(I)C").isDeprecated()).isFalse();
    assertThat(asmClass.getMethod("charAt(I)C").isStatic()).isFalse();
    assertThat(asmClass.getMethod("valueOf(C)Ljava/lang/String;").isStatic()).isTrue();

    asmClass = asmClassProvider.getClass("tags/File");
    AsmMethod getLines =
        asmClass.getMethod("read(Ljava/util/Collection;Ljava/lang/String;)Ljava/lang/String;");
    assertThat(getLines.getDistinctUsedAsmClasses().contains(new AsmClass("java/util/Collection")))
        .isTrue();
    assertThat(getLines.getDistinctUsedAsmClasses().contains(new AsmClass("tags/File"))).isTrue();
    assertThat(getLines.getDistinctUsedAsmClasses().contains(new AsmClass("java/lang/String")))
        .isTrue();
    assertThat(
            getLines
                .getDistinctUsedAsmClasses()
                .contains(new AsmClass("java/lang/RuntimeException")))
        .isTrue();
  }