Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision a33fdbe603eabf0f119baea67aeefde94c588820)
+++ src/GenPoly/Box.cc	(revision 20cba764423d28f18b831e101ad242aeb1c97db7)
@@ -988,11 +988,11 @@
 
 		Expression *Pass1::handleIntrinsics( ApplicationExpr *appExpr ) {
-			if ( VariableExpr *varExpr = dynamic_cast< VariableExpr *>( appExpr->get_function() ) ) {
-				if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic ) {
-					if ( varExpr->get_var()->get_name() == "?[?]" ) {
+			if ( VariableExpr *varExpr = dynamic_cast< VariableExpr *>( appExpr->function ) ) {
+				if ( varExpr->var->linkage == LinkageSpec::Intrinsic ) {
+					if ( varExpr->var->name == "?[?]" ) {
 						assert( appExpr->result );
 						assert( appExpr->get_args().size() == 2 );
-						Type *baseType1 = isPolyPtr( appExpr->get_args().front()->get_result(), scopeTyVars, env );
-						Type *baseType2 = isPolyPtr( appExpr->get_args().back()->get_result(), scopeTyVars, env );
+						Type *baseType1 = isPolyPtr( appExpr->args.front()->result, scopeTyVars, env );
+						Type *baseType2 = isPolyPtr( appExpr->args.back()->result, scopeTyVars, env );
 						assert( ! baseType1 || ! baseType2 ); // the arguments cannot both be polymorphic pointers
 						UntypedExpr *ret = 0;
@@ -1555,35 +1555,35 @@
 			// only mutate member expressions for polymorphic types
 			int tyDepth;
-			Type *objectType = hasPolyBase( memberExpr->get_aggregate()->get_result(), scopeTyVars, &tyDepth );
+			Type *objectType = hasPolyBase( memberExpr->aggregate->result, scopeTyVars, &tyDepth );
 			if ( ! objectType ) return memberExpr;
 			findGeneric( objectType ); // ensure layout for this type is available
 
 			// replace member expression with dynamically-computed layout expression
-			Expression *newMemberExpr = 0;
+			Expression *newMemberExpr = nullptr;
 			if ( StructInstType *structType = dynamic_cast< StructInstType* >( objectType ) ) {
 				// look up offset index
-				long i = findMember( memberExpr->get_member(), structType->get_baseStruct()->get_members() );
+				long i = findMember( memberExpr->member, structType->baseStruct->members );
 				if ( i == -1 ) return memberExpr;
 
 				// replace member expression with pointer to base plus offset
 				UntypedExpr *fieldLoc = new UntypedExpr( new NameExpr( "?+?" ) );
-				Expression * aggr = memberExpr->get_aggregate()->clone();
-				delete aggr->get_env(); // xxx - there's a problem with keeping the env for some reason, so for now just get rid of it
-				aggr->set_env( nullptr );
+				Expression * aggr = memberExpr->aggregate->clone();
+				delete aggr->env; // xxx - there's a problem with keeping the env for some reason, so for now just get rid of it
+				aggr->env = nullptr;
 				fieldLoc->get_args().push_back( aggr );
 				fieldLoc->get_args().push_back( makeOffsetIndex( objectType, i ) );
-				fieldLoc->set_result( memberExpr->get_result()->clone() );
+				fieldLoc->set_result( memberExpr->result->clone() );
 				newMemberExpr = fieldLoc;
 			} else if ( dynamic_cast< UnionInstType* >( objectType ) ) {
 				// union members are all at offset zero, so just use the aggregate expr
-				Expression * aggr = memberExpr->get_aggregate()->clone();
-				delete aggr->get_env(); // xxx - there's a problem with keeping the env for some reason, so for now just get rid of it
-				aggr->set_env( nullptr );
+				Expression * aggr = memberExpr->aggregate->clone();
+				delete aggr->env; // xxx - there's a problem with keeping the env for some reason, so for now just get rid of it
+				aggr->env= nullptr;
 				newMemberExpr = aggr;
-				newMemberExpr->set_result( memberExpr->get_result()->clone() );
+				newMemberExpr->result = memberExpr->result->clone();
 			} else return memberExpr;
 			assert( newMemberExpr );
 
-			Type *memberType = memberExpr->get_member()->get_type();
+			Type *memberType = memberExpr->member->get_type();
 			if ( ! isPolyType( memberType, scopeTyVars ) ) {
 				// Not all members of a polymorphic type are themselves of polymorphic type; in this case the member expression should be wrapped and dereferenced to form an lvalue
@@ -1598,5 +1598,5 @@
 
 		ObjectDecl *PolyGenericCalculator::makeVar( const std::string &name, Type *type, Initializer *init ) {
-			ObjectDecl *newObj = new ObjectDecl( name, Type::StorageClasses(), LinkageSpec::C, 0, type, init );
+			ObjectDecl *newObj = new ObjectDecl( name, Type::StorageClasses(), LinkageSpec::C, nullptr, type, init );
 			stmtsToAddBefore.push_back( new DeclStmt( newObj ) );
 			return newObj;
