library {
  // module name: <MethodModality.kt>

  library fragment {
    // package name: <root>

    // class name: AbstractClass
    // class name: FinalClass
    // class name: Interface
    // class name: OpenClass

    // signature: /AbstractClass|null[0]
    public abstract class AbstractClass : Interface {

      // signature: /AbstractClass.<init>|<init>(){}[0]
      public constructor()

      // signature: /AbstractClass.abstractFun|abstractFun(){}[0]
      public abstract fun abstractFun(): kotlin/Unit

      // signature: /AbstractClass.interfaceFun|interfaceFun(){}[0]
      public open fun interfaceFun(): kotlin/Unit
    }

    // signature: /FinalClass|null[0]
    public final class FinalClass : OpenClass {

      // signature: /FinalClass.<init>|<init>(){}[0]
      public constructor()

      // signature: /FinalClass.openFun1|openFun1(){}[0]
      public open fun openFun1(): kotlin/Unit

      // signature: /FinalClass.openFun2|openFun2(){}[0]
      public final fun openFun2(): kotlin/Unit
    }

    // signature: /Interface|null[0]
    public abstract interface Interface : kotlin/Any {

      // signature: /Interface.interfaceFun|interfaceFun(){}[0]
      public abstract fun interfaceFun(): kotlin/Unit
    }

    // signature: /OpenClass|null[0]
    public open class OpenClass : AbstractClass {

      // signature: /OpenClass.<init>|<init>(){}[0]
      public constructor()

      // signature: /OpenClass.abstractFun|abstractFun(){}[0]
      public open fun abstractFun(): kotlin/Unit

      // signature: /OpenClass.finalFun|finalFun(){}[0]
      public final fun finalFun(): kotlin/Unit

      // signature: /OpenClass.openFun1|openFun1(){}[0]
      public open fun openFun1(): kotlin/Unit

      // signature: /OpenClass.openFun2|openFun2(){}[0]
      public open fun openFun2(): kotlin/Unit
    }
  }
}
