Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 60914351ad58d1338a7f0f9215f04d28bdc2c624)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 624b722d4ef4ada94ff3db5d98fca59d7d367b74)
@@ -1563,30 +1563,30 @@
 		// find alternatives for condition
 		AlternativeFinder firstFinder( indexer, env );
-		firstFinder.findWithAdjustment( conditionalExpr->get_arg1() );
+		firstFinder.findWithAdjustment( conditionalExpr->arg1 );
 		if ( firstFinder.alternatives.empty() ) return;
 		// find alternatives for true expression
 		AlternativeFinder secondFinder( indexer, env );
-		secondFinder.findWithAdjustment( conditionalExpr->get_arg2() );
+		secondFinder.findWithAdjustment( conditionalExpr->arg2 );
 		if ( secondFinder.alternatives.empty() ) return;
 		// find alterantives for false expression
 		AlternativeFinder thirdFinder( indexer, env );
-		thirdFinder.findWithAdjustment( conditionalExpr->get_arg3() );
+		thirdFinder.findWithAdjustment( conditionalExpr->arg3 );
 		if ( thirdFinder.alternatives.empty() ) return;
-		for ( AltList::const_iterator first = firstFinder.alternatives.begin(); first != firstFinder.alternatives.end(); ++first ) {
-			for ( AltList::const_iterator second = secondFinder.alternatives.begin(); second != secondFinder.alternatives.end(); ++second ) {
-				for ( AltList::const_iterator third = thirdFinder.alternatives.begin(); third != thirdFinder.alternatives.end(); ++third ) {
+		for ( const Alternative & first : firstFinder.alternatives ) {
+			for ( const Alternative & second : secondFinder.alternatives ) {
+				for ( const Alternative & third : thirdFinder.alternatives ) {
 					TypeEnvironment compositeEnv;
-					compositeEnv.simpleCombine( first->env );
-					compositeEnv.simpleCombine( second->env );
-					compositeEnv.simpleCombine( third->env );
+					compositeEnv.simpleCombine( first.env );
+					compositeEnv.simpleCombine( second.env );
+					compositeEnv.simpleCombine( third.env );
 
 					// unify true and false types, then infer parameters to produce new alternatives
 					OpenVarSet openVars;
 					AssertionSet needAssertions, haveAssertions;
-					Alternative newAlt( 0, compositeEnv, first->cost + second->cost + third->cost );
+					Alternative newAlt( 0, compositeEnv, first.cost + second.cost + third.cost );
 					Type* commonType = nullptr;
-					if ( unify( second->expr->get_result(), third->expr->get_result(), newAlt.env, needAssertions, haveAssertions, openVars, indexer, commonType ) ) {
-						ConditionalExpr *newExpr = new ConditionalExpr( first->expr->clone(), second->expr->clone(), third->expr->clone() );
-						newExpr->set_result( commonType ? commonType : second->expr->get_result()->clone() );
+					if ( unify( second.expr->result, third.expr->result, newAlt.env, needAssertions, haveAssertions, openVars, indexer, commonType ) ) {
+						ConditionalExpr *newExpr = new ConditionalExpr( first.expr->clone(), second.expr->clone(), third.expr->clone() );
+						newExpr->result = commonType ? commonType : second.expr->result->clone();
 						// convert both options to the conditional result type
 						newAlt.cost += computeExpressionConversionCost( newExpr->arg2, newExpr->result, indexer, newAlt.env );
