func foo(x):
    match x:
        {"key1": "value1", "key2": "value2"}:
            print('{"key1": "value1", "key2": "value2"}')
        {"key1": "value1", "key2"}:
            print('{"key1": "value1", "key2"}')
        {"key1", "key2": "value2"}:
            print('{"key1", "key2": "value2"}')
        {"key1", "key2"}:
            print('{"key1", "key2"}')
        {"key1": "value1"}:
            print('{"key1": "value1"}')
        {"key1"}:
            print('{"key1"}')
        _:
            print("wildcard")

func bar(x):
    match x:
        {0}:
            print("0")
        {1}:
            print("1")
        {2}:
            print("2")
        _:
            print("wildcard")

func test():
    foo({"key1": "value1", "key2": "value2"})
    foo({"key1": "value1", "key2": ""})
    foo({"key1": "", "key2": "value2"})
    foo({"key1": "", "key2": ""})
    foo({"key1": "value1"})
    foo({"key1": ""})
    foo({"key1": "value1", "key2": "value2", "key3": "value3"})
    foo({"key1": "value1", "key3": ""})
    foo({"key2": "value2"})
    foo({"key3": ""})
    bar({0: "0"})
    bar({1: "1"})
    bar({2: "2"})
    bar({3: "3"})