diff --git a/src/ast/expression.cc b/src/ast/expression.cc
index 402b8eb..71074e6 100644
--- a/src/ast/expression.cc
+++ b/src/ast/expression.cc
@@ -89,6 +89,60 @@
 bool Expression::IsUnaryOp() const {
   return false;
 }
+const ArrayAccessorExpression* Expression::AsArrayAccessor() const {
+  assert(IsArrayAccessor());
+  return static_cast<const ArrayAccessorExpression*>(this);
+}
+
+const AsExpression* Expression::AsAs() const {
+  assert(IsAs());
+  return static_cast<const AsExpression*>(this);
+}
+
+const BinaryExpression* Expression::AsBinary() const {
+  assert(IsBinary());
+  return static_cast<const BinaryExpression*>(this);
+}
+
+const CallExpression* Expression::AsCall() const {
+  assert(IsCall());
+  return static_cast<const CallExpression*>(this);
+}
+
+const CastExpression* Expression::AsCast() const {
+  assert(IsCast());
+  return static_cast<const CastExpression*>(this);
+}
+
+const ConstructorExpression* Expression::AsConstructor() const {
+  assert(IsConstructor());
+  return static_cast<const ConstructorExpression*>(this);
+}
+
+const IdentifierExpression* Expression::AsIdentifier() const {
+  assert(IsIdentifier());
+  return static_cast<const IdentifierExpression*>(this);
+}
+
+const MemberAccessorExpression* Expression::AsMemberAccessor() const {
+  assert(IsMemberAccessor());
+  return static_cast<const MemberAccessorExpression*>(this);
+}
+
+const UnaryDerivativeExpression* Expression::AsUnaryDerivative() const {
+  assert(IsUnaryDerivative());
+  return static_cast<const UnaryDerivativeExpression*>(this);
+}
+
+const UnaryMethodExpression* Expression::AsUnaryMethod() const {
+  assert(IsUnaryMethod());
+  return static_cast<const UnaryMethodExpression*>(this);
+}
+
+const UnaryOpExpression* Expression::AsUnaryOp() const {
+  assert(IsUnaryOp());
+  return static_cast<const UnaryOpExpression*>(this);
+}
 
 ArrayAccessorExpression* Expression::AsArrayAccessor() {
   assert(IsArrayAccessor());
diff --git a/src/ast/expression.h b/src/ast/expression.h
index 1ad81d0..3055bce 100644
--- a/src/ast/expression.h
+++ b/src/ast/expression.h
@@ -71,6 +71,29 @@
   virtual bool IsUnaryOp() const;
 
   /// @returns the expression as an array accessor
+  const ArrayAccessorExpression* AsArrayAccessor() const;
+  /// @returns the expression as an as
+  const AsExpression* AsAs() const;
+  /// @returns the expression as a call
+  const CallExpression* AsCall() const;
+  /// @returns the expression as a cast
+  const CastExpression* AsCast() const;
+  /// @returns the expression as an identifier
+  const IdentifierExpression* AsIdentifier() const;
+  /// @returns the expression as an constructor
+  const ConstructorExpression* AsConstructor() const;
+  /// @returns the expression as a member accessor
+  const MemberAccessorExpression* AsMemberAccessor() const;
+  /// @returns the expression as a binary expression
+  const BinaryExpression* AsBinary() const;
+  /// @returns the expression as a unary derivative expression
+  const UnaryDerivativeExpression* AsUnaryDerivative() const;
+  /// @returns the expression as a unary method expression
+  const UnaryMethodExpression* AsUnaryMethod() const;
+  /// @returns the expression as a unary op expression
+  const UnaryOpExpression* AsUnaryOp() const;
+
+ /// @returns the expression as an array accessor
   ArrayAccessorExpression* AsArrayAccessor();
   /// @returns the expression as an as
   AsExpression* AsAs();
