package foo

import bar.*

/*p:foo*/fun usages(i: /*p:foo*/I) /*p:foo(E)*/{
    /*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/a
    /*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/b
    /*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/c
    /*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/d = "new value"
    /*p:foo p:foo(invoke) p:foo.A.Companion(invoke)*/A()./*p:foo.A*/foo()
    /*p:foo*/A./*p:foo.A p:foo.A.B.CO(invoke) p:foo.A.Companion*/B()./*p:foo.A.B*/a
    /*p:foo*/A./*p:foo.A*/B./*p:foo.A.B p:foo.A.B.CO*/bar(1)
    /*p:foo*/A./*p:foo.A*/B./*p:foo.A.B*/CO./*p:foo.A.B.CO*/bar(1)
    /*p:foo p:foo.A(Companion)*/A
    /*p:foo*/A./*p:foo.A p:foo.A.Companion*/a
    /*p:foo*/A./*p:foo.A p:foo.A.Companion*/baz()
    /*p:foo p:foo.A(Companion)*/A./*p:foo.A p:foo.A.Companion*/Companion
    /*p:foo*/A./*p:foo.A*/Companion./*p:foo.A.Companion*/baz()
    /*p:foo p:foo.A(O)*/A./*p:foo.A p:foo.A.Companion*/O
    /*p:foo*/A./*p:foo.A*/O./*p:foo.A.O*/v = "OK"

    /*p:foo(I)*/i./*p:foo.I*/a = 2
    /*p:foo*/Obj./*p:foo.Obj*/a
    /*p:foo*/Obj./*p:foo.Obj*/foo()
    var ii: /*p:foo*/I = /*p:foo*/Obj
    /*p:foo(I)*/ii./*p:foo.I*/a
    /*p:foo(I)*/ii./*p:foo.I*/foo()
    /*p:foo*/Obj./*p:foo.Obj*/b
    val iii = /*p:foo p:foo(I)*/Obj./*p:foo.Obj*/bar()
    /*p:foo(I)*/iii./*p:foo.I*/foo()

    /*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/X
    /*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/X./*p:foo.E*/a
    /*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/Y./*p:foo.E*/foo()
    /*p:bar p:foo p:java.lang p:kotlin p:kotlin(Array) p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/values()
    /*p:bar p:foo p:java.lang p:kotlin p:kotlin.annotation p:kotlin.collections p:kotlin.comparisons p:kotlin.io p:kotlin.jvm p:kotlin.ranges p:kotlin.sequences p:kotlin.text*/E./*p:foo.E*/valueOf("")
}

/*p:foo*/fun classifiers(
        a: /*p:foo*/A,
        ab: /*p:foo*/A./*p:foo.A*/B,
        ac: /*p:foo*/A./*p:foo.A*/C,
        abCo: /*p:foo*/A./*p:foo.A*/B./*p:foo.A.B*/CO,
        aCompanion: /*p:foo*/A./*p:foo.A*/Companion,
        aO: /*p:foo*/A./*p:foo.A*/O,
        i: /*p:foo*/I,
        ni: /*p:foo*/I./*p:foo.I*/NI,
        obj: /*p:foo*/Obj,
        e: /*p:foo*/E
) {}
