// RUN_PIPELINE_TILL: BACKEND
// Test for a potential byte code mistake for a postfix operation on a smart casted variable
public fun box() : Int {
    var i : Int? 
    i = 10
    val ii: Int = i
    // k also should be Int
    val k : Int = i++
    // KT-7561: both i and i++ should be Int, otherwise VerifyError can arise here
    // VerifyError reason: byte code tries to store (i++) result which is Int (smart cast)
    // into a j which is Int?
    val j = i++
    // and m also
    val m = ++i
    return j + k + m + i + ii
}

/* GENERATED_FIR_TAGS: additiveExpression, assignment, functionDeclaration, incrementDecrementExpression, integerLiteral,
localProperty, nullableType, propertyDeclaration, smartcast */
