test3 =
    runST $
    do
    tp <- newSTRef DUEmpty -- could be anything
    e1 <- newSTRef DUEmpty
    writeSTRef tp (DUNode e1 5 e1) -- tree with Empty subtree refs shared
    dubst_insert_du 3 tp  -- clobbers both occurrences of e1 - oops!
    t <- readSTRef tp
    dubst_size t
test3 =
    runST $
    do
    tp <- newSTRef DUEmpty -- could be anything
    e1 <- newSTRef DUEmpty
    writeSTRef tp (DUNode e1 5 e1) -- tree with Empty subtree refs shared
    dubst_insert_du 3 tp  -- clobbers both occurrences of e1 - oops!
    t <- readSTRef tp
    dubst_size t
test3 =
    runST $
    do
    tp <- newSTRef DUEmpty -- could be anything
    e1 <- newSTRef DUEmpty
    writeSTRef tp (DUNode e1 5 e1) -- tree with Empty subtree refs shared
    dubst_insert_du 3 tp  -- clobbers both occurrences of e1 - oops!
    t <- readSTRef tp
    dubst_size t