Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Expression.h	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -690,25 +690,4 @@
 };
 
-/// MemberTupleExpr represents a tuple member selection operation on a struct type, e.g. s.[a, b, c] after processing by the expression analyzer
-class MemberTupleExpr : public Expression {
-  public:
-	MemberTupleExpr( Expression * member, Expression * aggregate, Expression * _aname = nullptr );
-	MemberTupleExpr( const MemberTupleExpr & other );
-	virtual ~MemberTupleExpr();
-
-	Expression * get_member() const { return member; }
-	Expression * get_aggregate() const { return aggregate; }
-	MemberTupleExpr * set_member( Expression * newValue ) { member = newValue; return this; }
-	MemberTupleExpr * set_aggregate( Expression * newValue ) { aggregate = newValue; return this; }
-
-	virtual MemberTupleExpr * clone() const { return new MemberTupleExpr( * this ); }
-	virtual void accept( Visitor & v ) { v.visit( this ); }
-	virtual Expression * acceptMutator( Mutator & m ) { return m.mutate( this ); }
-	virtual void print( std::ostream & os, int indent = 0 ) const;
-  private:
-	Expression * member;
-	Expression * aggregate;
-};
-
 /// TupleAssignExpr represents a multiple assignment operation, where both sides of the assignment have tuple type, e.g. [a, b, c] = [d, e, f];, a mass assignment operation, where the left hand side has tuple type and the right hand side does not, e.g. [a, b, c] = 5.0;, or a tuple ctor/dtor expression
 class TupleAssignExpr : public Expression {
Index: src/SynTree/Initializer.cc
===================================================================
--- src/SynTree/Initializer.cc	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Initializer.cc	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -33,5 +33,5 @@
 }
 
-void Initializer::print( std::ostream &os, int indent ) {}
+// void Initializer::print( __attribute__((unused)) std::ostream &os, __attribute__((unused)) int indent ) {}
 
 SingleInit::SingleInit( Expression *v, const std::list< Expression *> &_designators, bool maybeConstructed ) : Initializer( maybeConstructed ), value ( v ), designators( _designators ) {
Index: src/SynTree/Initializer.h
===================================================================
--- src/SynTree/Initializer.h	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Initializer.h	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -53,5 +53,5 @@
 	virtual void accept( Visitor &v ) = 0;
 	virtual Initializer *acceptMutator( Mutator &m ) = 0;
-	virtual void print( std::ostream &os, int indent = 0 );
+	virtual void print( std::ostream &os, int indent = 0 ) = 0;
   private:
 	//	std::string name;
Index: src/SynTree/Mutator.cc
===================================================================
--- src/SynTree/Mutator.cc	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Mutator.cc	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -408,12 +408,4 @@
 }
 
-Expression *Mutator::mutate( MemberTupleExpr *tupleExpr ) {
-	tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
-	tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
-	tupleExpr->set_member( maybeMutate( tupleExpr->get_member(), *this ) );
-	tupleExpr->set_aggregate( maybeMutate( tupleExpr->get_aggregate(), *this ) );
-	return tupleExpr;
-}
-
 Expression *Mutator::mutate( TupleAssignExpr *assignExpr ) {
 	assignExpr->set_env( maybeMutate( assignExpr->get_env(), *this ) );
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Mutator.h	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -82,5 +82,4 @@
 	virtual Expression* mutate( TupleExpr *tupleExpr );
 	virtual Expression* mutate( TupleIndexExpr *tupleExpr );
-	virtual Expression* mutate( MemberTupleExpr *tupleExpr );
 	virtual Expression* mutate( TupleAssignExpr *assignExpr );
 	virtual Expression* mutate( StmtExpr * stmtExpr );
Index: src/SynTree/SynTree.h
===================================================================
--- src/SynTree/SynTree.h	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/SynTree.h	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -89,5 +89,4 @@
 class TupleExpr;
 class TupleIndexExpr;
-class MemberTupleExpr;
 class TupleAssignExpr;
 class StmtExpr;
Index: src/SynTree/TupleExpr.cc
===================================================================
--- src/SynTree/TupleExpr.cc	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/TupleExpr.cc	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -78,26 +78,4 @@
 }
 
-MemberTupleExpr::MemberTupleExpr( Expression * member, Expression * aggregate, Expression * _aname ) : Expression( _aname ) {
-	set_result( maybeClone( member->get_result() ) ); // xxx - ???
-}
-
-MemberTupleExpr::MemberTupleExpr( const MemberTupleExpr &other ) : Expression( other ), member( other.member->clone() ), aggregate( other.aggregate->clone() ) {
-}
-
-MemberTupleExpr::~MemberTupleExpr() {
-	delete member;
-	delete aggregate;
-}
-
-void MemberTupleExpr::print( std::ostream &os, int indent ) const {
-	os << "Member Tuple Expression, with aggregate:" << std::endl;
-	os << std::string( indent+2, ' ' );
-	aggregate->print( os, indent+2 );
-	os << std::string( indent+2, ' ' ) << "with member: " << std::endl;
-	os << std::string( indent+2, ' ' );
-	member->print( os, indent+2 );
-	Expression::print( os, indent );
-}
-
 TupleAssignExpr::TupleAssignExpr( const std::list< Expression * > & assigns, const std::list< ObjectDecl * > & tempDecls, Expression * _aname ) : Expression( _aname ) {
 	// convert internally into a StmtExpr which contains the declarations and produces the tuple of the assignments
Index: src/SynTree/Visitor.cc
===================================================================
--- src/SynTree/Visitor.cc	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Visitor.cc	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -321,10 +321,4 @@
 }
 
-void Visitor::visit( MemberTupleExpr *tupleExpr ) {
-	maybeAccept( tupleExpr->get_result(), *this );
-	maybeAccept( tupleExpr->get_member(), *this );
-	maybeAccept( tupleExpr->get_aggregate(), *this );
-}
-
 void Visitor::visit( TupleAssignExpr *assignExpr ) {
 	maybeAccept( assignExpr->get_result(), *this );
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SynTree/Visitor.h	(revision 5a7966bb2ad10291c1dd826a1383fefd823ba6e0)
@@ -85,5 +85,4 @@
 	virtual void visit( TupleExpr *tupleExpr );
 	virtual void visit( TupleIndexExpr *tupleExpr );
-	virtual void visit( MemberTupleExpr *tupleExpr );
 	virtual void visit( TupleAssignExpr *assignExpr );
 	virtual void visit( StmtExpr * stmtExpr );
