// properties

public val publicVal: Int = 1
public var publicVar: Int = 1
internal val internalVal: Long = 1
internal var internalVar: Long = 1
private val privateVal: Any? = 1
private var privateVar: Any? = 1

// fields
@JvmField public val publicValField: Int = 1
@JvmField public var publicVarField: Int = 1
@JvmField internal val internalValField: Long = 1
@JvmField internal var internalVarField: Long = 1

// constants

public const val publicConst: Int = 2
internal const val internalConst: Int = 3
private const val privateConst: Int = 4

// fun

public fun publicFun() {}
internal fun internalFun(param1: Int) {}
private fun privateFun(x: Any?) {}

@JvmOverloads
internal fun internalOverloads(a: String = "", b: Long? = null) {}


private class PrivateClass {
    internal fun accessUsage() {
        privateFun(privateVal)
        privateFun(privateVar)
        privateFun(privateConst)
    }

}