Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 02fdb8eb4c22b14a7fc7116a96f53d73dae71205)
+++ src/InitTweak/InitTweak.cc	(revision 9e1d48503286c2f21bf3f599590920efc8b02293)
@@ -5,4 +5,5 @@
 #include <memory>                  // for __shared_ptr
 
+#include "AST/Type.hpp"
 #include "Common/PassVisitor.h"
 #include "Common/SemanticError.h"  // for SemanticError
@@ -513,4 +514,13 @@
 		}
 	}
+	const ast::Type* getPointerBase( const ast::Type* t ) {
+		if ( const ast::PointerType* p = dynamic_cast< const ast::PointerType* >( t ) ) {
+			return p->base;
+		} else if ( const ast::ArrayType* a = dynamic_cast< const ast::ArrayType* >( t ) ) {
+			return a->base;
+		} else if ( const ast::ReferenceType* r = dynamic_cast< const ast::ReferenceType* >( t ) ) {
+			return r->base;
+		} else return nullptr;
+	}
 
 	Type * isPointerType( Type * type ) {
Index: src/InitTweak/InitTweak.h
===================================================================
--- src/InitTweak/InitTweak.h	(revision 02fdb8eb4c22b14a7fc7116a96f53d73dae71205)
+++ src/InitTweak/InitTweak.h	(revision 9e1d48503286c2f21bf3f599590920efc8b02293)
@@ -20,4 +20,5 @@
 #include <string>             // for string, allocator
 
+#include "AST/Fwd.hpp"        // for AST nodes
 #include "SynTree/SynTree.h"  // for Visitor Nodes
 
@@ -83,4 +84,5 @@
 	/// returns the base type of a PointerType or ArrayType, else returns NULL
 	Type * getPointerBase( Type * );
+	const ast::Type* getPointerBase( const ast::Type* );
 
 	/// returns the argument if it is a PointerType or ArrayType, else returns NULL
