require containers >= 0.5 for Data.Map.traverseWithKey
Expr.Utils.annotateTypePositions towards better implicit vars