ruleOP :: RuleOp -> (Maybe a, Maybe a) -> (Maybe a, Maybe a)
ruleOP Preserve (Just x, Nothing) = (Just x, Just x)
ruleOP :: RuleOp -> (Maybe a, Maybe a) -> (Maybe a, Maybe a)
ruleOP Preserve (Just x, Nothing) = (Just x, Just x)
ruleOP Preserve (Just x, Nothing) = (Just x, Just x)