var holder = ""

var mainShape: Shape? = null

fun getShape(): Shape? {
    holder += "getShape1()"
    mainShape = Shape("fail")
    return mainShape
}

fun getOK(): String {
    holder += "->OK"
    return "OK"
}


class Shape(var result: String) {

    var innerShape: Shape? = null

    fun getShape2(): Shape? {
        holder += "->getShape2()"
        innerShape = Shape(result)
        return innerShape
    }
}

fun box(): String {
    getShape()?.getShape2()?.result = getOK();

    if (holder != "getShape1()->getShape2()->OK") return "fail $holder"

    return mainShape!!.innerShape!!.result
}