An uninitialized VBScript variable is Empty, so scripts can end up using Empty as a dictionary key alongside a numeric 0 or "". Native treats those as the same key; Wine kept Empty distinct from every other type. Match an Empty key against any numeric zero or the empty string, while keeping it distinct from Null and from non-zero/non-empty keys. A Boolean key was rejected outright (E_NOTIMPL), breaking Exists/Remove when a script uses a comparison result as a key; hash it by its numeric value like the other numeric types. -- v6: scrrun/dictionary: Match native key semantics for Boolean keys. scrrun/tests: Add tests for Boolean dictionary keys. scrrun/dictionary: Match Empty keys against zero-valued and empty-string keys. scrrun/tests: Add tests for Empty dictionary keys. https://gitlab.winehq.org/wine/wine/-/merge_requests/10960