// MapBox extended ops smoke: remove/clear/keysStr/getOr and string keys
static box Main {
  init { console }
  main() {
    me.console = new ConsoleBox()
    local m = new MapBox()
    // int keys
    m.set(1, 10)
    m.set(2, 20)
    // string keys via typed helpers
    m.setS("alpha", 100)
    m.setS("beta", 200)

    // getOr for missing keys
    local gx = m.getOr("missing", 7)
    if gx != 7 { return 1 }

    // remove existing
    local r1 = m.remove("alpha")
    // remove non-existing
    local r2 = m.remove("zzz")
    if r1 != true { return 2 }
    if r2 != false { return 3 }

    // keysStr contains beta and not alpha
    local ks = m.keysStr()
    // naive contains check using StringBox concat/length
    // we leverage toString and simple equality by building markers
    me.console.log(ks)
    // Simple heuristic: ensure size > 0
    if ks.length() == 0 { return 4 }

    // clear
    m.clear()
    if m.size() != 0 { return 5 }
    return 0
  }
}

