Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 630a82a5214317b27ab087ea8d7665b217527f07)
+++ src/SynTree/Expression.cc	(revision bb8ea3011a8148746d8e28699f24b68eaa57a951)
@@ -9,6 +9,6 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Apr  8 17:16:23 2016
+// Last Modified By : Rob Schluntz
+// Last Modified On : Fri May 13 13:19:09 2016
 // Update Count     : 40
 //
@@ -72,8 +72,7 @@
 
 void ConstantExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "constant expression " ;
+	os << "constant expression " ;
 	constant.print( os );
 	Expression::print( os, indent );
-	os << std::endl;
 }
 
@@ -93,5 +92,5 @@
 
 void VariableExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "Variable Expression: ";
+	os << "Variable Expression: ";
 
 	Declaration *decl = get_var();
@@ -122,5 +121,5 @@
 
 void SizeofExpr::print( std::ostream &os, int indent) const {
-	os << std::string( indent, ' ' ) << "Sizeof Expression on: ";
+	os << "Sizeof Expression on: ";
 
 	if (isType)
@@ -212,4 +211,25 @@
 
 	os << " of ";
+
+	if ( type ) {
+		type->print(os, indent + 2);
+	} else {
+		os << "<NULL>";
+	}
+
+	os << std::endl;
+	Expression::print( os, indent );
+}
+
+OffsetPackExpr::OffsetPackExpr( StructInstType *type_, Expression *aname_ ) : Expression( aname_ ), type( type_ ) {
+	add_result( new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0, false, false ) );
+}
+
+OffsetPackExpr::OffsetPackExpr( const OffsetPackExpr &other ) : Expression( other ), type( maybeClone( other.type ) ) {}
+
+OffsetPackExpr::~OffsetPackExpr() { delete type; }
+
+void OffsetPackExpr::print( std::ostream &os, int indent ) const {
+	os << std::string( indent, ' ' ) << "Offset pack expression on ";
 
 	if ( type ) {
@@ -274,5 +294,5 @@
 
 void CastExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "Cast of:" << std::endl;
+	os << "Cast of:" << std::endl << std::string( indent+2, ' ' );
 	arg->print(os, indent+2);
 	os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl;
@@ -297,9 +317,13 @@
 
 void UntypedMemberExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "Member Expression, with field: " << get_member();
+	os << "Untyped Member Expression, with field: " << get_member();
 
 	Expression *agg = get_aggregate();
-	os << std::string( indent, ' ' ) << "from aggregate: ";
-	if (agg != 0) agg->print(os, indent + 2);
+	os << ", from aggregate: ";
+	if (agg != 0) {
+		os << std::string( indent + 2, ' ' );
+		agg->print(os, indent + 2);
+	}
+	os << std::string( indent+2, ' ' );
 	Expression::print( os, indent );
 }
@@ -324,5 +348,5 @@
 
 void MemberExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "Member Expression, with field: " << std::endl;
+	os << "Member Expression, with field: " << std::endl;
 
 	assert( member );
@@ -333,5 +357,9 @@
 	Expression *agg = get_aggregate();
 	os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
-	if (agg != 0) agg->print(os, indent + 2);
+	if (agg != 0) {
+		os << std::string( indent + 2, ' ' );
+		agg->print(os, indent + 2);
+	}
+	os << std::string( indent+2, ' ' );
 	Expression::print( os, indent );
 }
@@ -351,8 +379,9 @@
 
 void UntypedExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "Applying untyped: " << std::endl;
-	function->print(os, indent + 4);
+	os << "Applying untyped: " << std::endl;
+	os << std::string( indent+2, ' ' );
+	function->print(os, indent + 2);
 	os << std::string( indent, ' ' ) << "...to: " << std::endl;
-	printArgs(os, indent + 4);
+	printAll(args, os, indent + 2);
 	Expression::print( os, indent );
 }
@@ -360,6 +389,8 @@
 void UntypedExpr::printArgs( std::ostream &os, int indent ) const {
 	std::list<Expression *>::const_iterator i;
-	for (i = args.begin(); i != args.end(); i++)
+	for (i = args.begin(); i != args.end(); i++) {
+		os << std::string(indent, ' ' );
 		(*i)->print(os, indent);
+	}
 }
 
@@ -372,5 +403,5 @@
 
 void NameExpr::print( std::ostream &os, int indent ) const {
-	os << std::string( indent, ' ' ) << "Name: " << get_name() << std::endl;
+	os << "Name: " << get_name() << std::endl;
 	Expression::print( os, indent );
 }
