Index: src/SynTree/Type.h
===================================================================
--- src/SynTree/Type.h	(revision fc638d2176b72a88b406e73af7f7f9e548ae05f7)
+++ src/SynTree/Type.h	(revision 793335167c5347f27e76d8ab9f3434b795a6602d)
@@ -72,4 +72,5 @@
 	virtual unsigned size() const { return 1; };
 	virtual bool isVoid() const { return size() == 0; }
+	virtual Type * getComponent( unsigned i ) { assertf( size() == 1 && i == 0, "Type::getComponent was called with size %d and index %d\n", size(), i ); return this; }
 
 	virtual Type *clone() const = 0;
@@ -372,4 +373,9 @@
 	iterator end() { return types.end(); }
 
+	virtual Type * getComponent( unsigned i ) {
+		assertf( i < size(), "TupleType::getComponent: index %d must be less than size %d", i, size() );
+		return *(begin()+i);
+	}
+
 	virtual TupleType *clone() const { return new TupleType( *this ); }
 	virtual void accept( Visitor &v ) { v.visit( this ); }
