def METHOD_NAME(reset):
    # Create surface dictionary
    s1 = openmc.ZCylinder(surface_id=1)
    s2 = openmc.ZPlane(-10., surface_id=2)
    s3 = openmc.ZPlane(10., surface_id=3)
    surfs = {1: s1, 2: s2, 3: s3}
    r = openmc.Region.from_expression('-1 2 -3', surfs)
    assert isinstance(r, openmc.Intersection)
    assert r[:] == [-s1, +s2, -s3]
    r = openmc.Region.from_expression('+1 | -2 | +3', surfs)
    assert isinstance(r, openmc.Union)
    assert r[:] == [+s1, -s2, +s3]
    r = openmc.Region.from_expression('~(-1)', surfs)
    assert r == +s1
    # Since & has higher precendence than |, the resulting region should be an
    # instance of Union
    r = openmc.Region.from_expression('1 -2 | 3', surfs)
    assert isinstance(r, openmc.Union)
    assert isinstance(r[0], openmc.Intersection)
    assert r[0][:] == [+s1, -s2]
    # ...but not if we use parentheses
    r = openmc.Region.from_expression('1 (-2 | 3)', surfs)
    assert isinstance(r, openmc.Intersection)
    assert isinstance(r[1], openmc.Union)
    assert r[1][:] == [-s2, +s3]
    # Make sure ")(" is handled correctly
    r = openmc.Region.from_expression('(-1|2)(2|-3)', surfs)
    assert str(r) == '((-1 | 2) (2 | -3))'
    # Opening parenthesis immediately after halfspace
    r = openmc.Region.from_expression('1(2|-3)', surfs)
    assert str(r) == '(1 (2 | -3))'