bindCleanExpression :: Endo' Expression
bindCleanExpression = \case

    Follow p x a | Just e <- asum $ map (subst Follow tainting x a) (patClean p) -> e
    Into   p x a | Just e <- asum $ map (subst Into   id       x a) (patClean p) -> e

    Follow (PTuple PWildCard p) (AppOp2 OpFmap (AppOp1 OpPair _) x) a -> Follow p x a

    e -> e
bindCleanExpression :: Endo' Expression
bindCleanExpression = \case

    Follow p x a | Just e <- asum $ map (subst Follow tainting x a) (patClean p) -> e
    Into   p x a | Just e <- asum $ map (subst Into   id       x a) (patClean p) -> e

    Follow (PTuple PWildCard p) (AppOp2 OpFmap (AppOp1 OpPair _) x) a -> Follow p x a

    e -> e
bindCleanExpression = \case

    Follow p x a | Just e <- asum $ map (subst Follow tainting x a) (patClean p) -> e
    Into   p x a | Just e <- asum $ map (subst Into   id       x a) (patClean p) -> e

    Follow (PTuple PWildCard p) (AppOp2 OpFmap (AppOp1 OpPair _) x) a -> Follow p x a

    e -> e