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

  library fragment {
    // package name: test

    // class name: test/C1
    // class name: test/C1.C2
    // class name: test/C1.Companion
    // class name: test/anno

    // signature: test/C1|null[0]
    @test/anno(x = "top level class")
    public final class test/C1 : kotlin/Any {

      // signature: test/C1.<init>|<init>(){}[0]
      @test/anno(x = "constructor")
      public constructor()

      // signature: test/C1.f3|f3(kotlin.Int){}[0]
      @test/anno(x = "member function")
      public final fun f3(@test/anno(x = "member function parameter") p: kotlin/Int): kotlin/Unit

      // signature: test/C1.f4|f4@kotlin.String(){}[0]
      @test/anno(x = "member extension function")
      public final fun kotlin/String.f4(): kotlin/Unit

      // signature: test/C1.p3|{}p3[0]
      @test/anno(x = "member property")
      public final val p3: kotlin/Nothing?
        // signature: test/C1.p3.<get-p3>|<get-p3>(){}[0]
        public final get

      // signature: test/C1.v4|@kotlin.Int{}v4[0]
      @test/anno(x = "member extension property")
      public final val kotlin/Int.v4: kotlin/Int
        // signature: test/C1.v4.<get-v4>|<get-v4>@kotlin.Int(){}[0]
        public final /* non-default */ get

      // companion object: Companion

      // nested class: C2

      // nested class: Companion
    }

    // signature: test/C1.C2|null[0]
    @test/anno(x = "nested class")
    public final class test/C1.C2 : kotlin/Any {

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

    // signature: test/C1.Companion|null[0]
    @test/anno(x = "companion object")
    public final companion object test/C1.Companion : kotlin/Any {

      // signature: test/C1.Companion.<init>|<init>(){}[0]
      private constructor()
    }

    // signature: test/anno|null[0]
    public final annotation class test/anno : kotlin/Annotation {

      // signature: test/anno.<init>|<init>(kotlin.String){}[0]
      public constructor(x: kotlin/String)

      // signature: test/anno.x|{}x[0]
      public final val x: kotlin/String
        // signature: test/anno.x.<get-x>|<get-x>(){}[0]
        public final get
    }

    package {

      // signature: test/f1|f1(kotlin.Int){}[0]
      @test/anno(x = "top level function")
      public final fun f1(@test/anno(x = "top level function parameter") p: kotlin/Int): kotlin/Unit

      // signature: test/f2|f2@kotlin.Long(kotlin.Int){}[0]
      @test/anno(x = "extension function")
      public final fun kotlin/Long.f2(@test/anno(x = "extension function parameter") p: kotlin/Int): kotlin/Unit

      // signature: test/p1|{}p1[0]
      @test/anno(x = "top level property")
      public final val p1: kotlin/Nothing?
        // signature: test/p1.<get-p1>|<get-p1>(){}[0]
        public final get

      // signature: test/p2|@kotlin.Double{}p2[0]
      @test/anno(x = "extension property")
      public final val kotlin/Double.p2: kotlin/Double
        // signature: test/p2.<get-p2>|<get-p2>@kotlin.Double(){}[0]
        public final /* non-default */ get
    }
  }
}
