Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 6a0d1b1e8d0e8397f8de83a000ffac69f486b89d)
+++ src/SynTree/Expression.cc	(revision 4551a6eded512f58326babd0f290704150f1f8e8)
@@ -288,6 +288,4 @@
 }
 
-// CastExpr *CastExpr::clone() const { return 0; }
-
 void CastExpr::print( std::ostream &os, int indent ) const {
 	os << "Cast of:" << std::endl << std::string( indent+2, ' ' );
@@ -355,5 +353,4 @@
 }
 
-//// is this right? It's cloning the member, but the member is a declaration so probably shouldn't be cloned...
 MemberExpr::MemberExpr( const MemberExpr &other ) :
 		Expression( other ), member( other.member ), aggregate( maybeClone( other.aggregate ) ) {
@@ -361,5 +358,5 @@
 
 MemberExpr::~MemberExpr() {
-	// delete member;
+	// don't delete the member declaration, since it points somewhere else in the tree
 	delete aggregate;
 }
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision 6a0d1b1e8d0e8397f8de83a000ffac69f486b89d)
+++ src/SynTree/Expression.h	(revision 4551a6eded512f58326babd0f290704150f1f8e8)
@@ -226,5 +226,6 @@
 };
 
-/// MemberExpr represents a member selection operation, e.g. q.p after processing by the expression analyzer
+/// MemberExpr represents a member selection operation, e.g. q.p after processing by the expression analyzer.
+/// Does not take ownership of member.
 class MemberExpr : public Expression {
   public:
@@ -247,5 +248,6 @@
 };
 
-/// VariableExpr represents an expression that simply refers to the value of a named variable
+/// VariableExpr represents an expression that simply refers to the value of a named variable.
+/// Does not take ownership of var.
 class VariableExpr : public Expression {
   public:
