weedStatement (For initializer expression statement statementBlock)
  | isJust initError = initError
  | isJust exprError = exprError
  | isJust stmtError = stmtError
  where initError = if isJust initializer then weedStatement $ fromJust initializer else Nothing
        exprError = if isJust expression then weedExpression $ fromJust expression else Nothing
        stmtError = if isJust statement then weedStatement $ fromJust statement else Nothing
weedStatement (For initializer expression statement statementBlock)
  | isJust initError = initError
  | isJust exprError = exprError
  | isJust stmtError = stmtError
  where initError = if isJust initializer then weedStatement $ fromJust initializer else Nothing
        exprError = if isJust expression then weedExpression $ fromJust expression else Nothing
        stmtError = if isJust statement then weedStatement $ fromJust statement else Nothing
weedStatement (For initializer expression statement statementBlock)
  | isJust initError = initError
  | isJust exprError = exprError
  | isJust stmtError = stmtError
  where initError = if isJust initializer then weedStatement $ fromJust initializer else Nothing
        exprError = if isJust expression then weedExpression $ fromJust expression else Nothing
        stmtError = if isJust statement then weedStatement $ fromJust statement else Nothing