 				whens.append(SQLWhen(when: when, then: then))
 				self.stack.append(.expression(SQLExpression.when(whens, else: nil)))
 			})+
-			~~ (((Parser.matchLiteralInsensitive("ELSE") ~~ ^"ex-equality") => {
+			~~ (((Parser.matchLiteralInsensitive("ELSE") ~~ ^"ex-equality") => { [unowned self] in
 				guard case .expression(let then) = self.stack.popLast()! else { fatalError() }
 				guard case .expression(let caseExpression) = self.stack.popLast()! else { fatalError() }
 				guard case .when(let whens, else: _) = caseExpression else { fatalError() }

			))

		add_named_rule("show-statement", rule: Parser.matchLiteralInsensitive("SHOW") ~~ (
			Parser.matchLiteralInsensitive("TABLES") => {
				self.stack.append(.statement(.show(.tables)))
			}
		))

						self.stack.append(.statement(.select(select)))
					})/~
						~~ (
							(Parser.matchLiteralInsensitive("ORDER BY") => { [unowned self] in
								self.stack.append(.orders([]))
							})
							~~ ^"orders" => { [unowned self] in
								guard case .orders(let orders) = self.stack.popLast()! else { fatalError() }
								guard case .statement(let st) = self.stack.popLast()! else { fatalError() }
								guard case .select(var select) = st else { fatalError() }
