untypeStmt' (If e body elseIfs elsePart) = 
  let untypeElseIf (ElseIfPart cond s) = 
        ElseIfPart (untypeExpr cond) (untypeStmt s)
  in If (untypeExpr e) (untypeStmt body)
        (map untypeElseIf elseIfs) (fmap untypeStmt elsePart)
untypeStmt' (If e body elseIfs elsePart) = 
  let untypeElseIf (ElseIfPart cond s) = 
        ElseIfPart (untypeExpr cond) (untypeStmt s)
  in If (untypeExpr e) (untypeStmt body)
        (map untypeElseIf elseIfs) (fmap untypeStmt elsePart)
untypeStmt' (If e body elseIfs elsePart) = 
  let untypeElseIf (ElseIfPart cond s) = 
        ElseIfPart (untypeExpr cond) (untypeStmt s)
  in If (untypeExpr e) (untypeStmt body)
        (map untypeElseIf elseIfs) (fmap untypeStmt elsePart)