mergePreCommented :: (a -> a -> a) -> PreCommented a -> PreCommented a -> PreCommented a
mergePreCommented merge (pre1, left) (pre2, right) =
    (pre1 ++ pre2, merge left right)
mergePreCommented :: (a -> a -> a) -> PreCommented a -> PreCommented a -> PreCommented a
mergePreCommented merge (pre1, left) (pre2, right) =
    (pre1 ++ pre2, merge left right)
mergePreCommented merge (pre1, left) (pre2, right) =
    (pre1 ++ pre2, merge left right)