Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 1db306ace498d673ec16b9dc9be553c62c38774e)
@@ -132,4 +132,27 @@
 	void printAlts( const AltList &list, std::ostream &os, unsigned int indentAmt ) {
 		Indenter indent = { indentAmt };
+
+		std::vector<int> idx;
+		idx.reserve(list.size());
+		for(int i = 0; i < list.size(); i++) { idx.push_back(i); }
+
+		std::sort(idx.begin(), idx.end(), [&list](int lhs_idx, int rhs_idx) -> bool {
+			const auto & lhs = list.at(lhs_idx);
+			const auto & rhs = list.at(rhs_idx);
+			if(lhs.expr->location.startsBefore(rhs.expr->location)) return true;
+			if(rhs.expr->location.startsBefore(lhs.expr->location)) return false;
+
+			if(lhs.env.size() < rhs.env.size()) return true;
+			if(lhs.env.size() > rhs.env.size()) return false;
+
+			if(lhs.openVars.size() < rhs.openVars.size()) return true;
+			if(lhs.openVars.size() > rhs.openVars.size()) return false;
+
+			if(lhs.need.size() < rhs.need.size()) return true;
+			if(lhs.need.size() > rhs.need.size()) return false;
+
+			return false;
+		});
+
 		for ( AltList::const_iterator i = list.begin(); i != list.end(); ++i ) {
 			i->print( os, indent );
@@ -1718,5 +1741,5 @@
 					std::cerr << std::endl;
 				)
-				
+
 				if ( thisCost != Cost::infinity ) {
 					// count one safe conversion for each value that is thrown away
Index: src/ResolvExpr/TypeEnvironment.h
===================================================================
--- src/ResolvExpr/TypeEnvironment.h	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
+++ src/ResolvExpr/TypeEnvironment.h	(revision 1db306ace498d673ec16b9dc9be553c62c38774e)
@@ -149,4 +149,6 @@
 		iterator end() const { return env.end(); }
 
+		auto size() const { return env.size(); }
+
 	  private:
 		ClassList env;
Index: tests/meta/.expect/archVast.nast.x64.txt
===================================================================
--- tests/meta/.expect/archVast.nast.x64.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
+++ tests/meta/.expect/archVast.nast.x64.txt	(revision 1db306ace498d673ec16b9dc9be553c62c38774e)
@@ -3,8 +3,14 @@
   Name: FX64
 ... to:
+  char
+... with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: signed int
+      ... with resolved type:
+        signed int
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -18,5 +24,12 @@
       ... returning nothing
 
+      ... with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: double
+      ... with resolved type:
+        double
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.nast.x86.txt
===================================================================
--- tests/meta/.expect/archVast.nast.x86.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
+++ tests/meta/.expect/archVast.nast.x86.txt	(revision 1db306ace498d673ec16b9dc9be553c62c38774e)
@@ -3,8 +3,14 @@
   Name: FX86
 ... to:
+  char
+... with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: signed int
+      ... with resolved type:
+        signed int
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -18,5 +24,12 @@
       ... returning nothing
 
+      ... with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: double
+      ... with resolved type:
+        double
     ... to:
+      char
+    ... with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.oast.x64.txt
===================================================================
--- tests/meta/.expect/archVast.oast.x64.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
+++ tests/meta/.expect/archVast.oast.x64.txt	(revision 1db306ace498d673ec16b9dc9be553c62c38774e)
@@ -3,4 +3,6 @@
   Name: FX64
 ... to:
+  char
+with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
@@ -9,5 +11,12 @@
       ... returning nothing
 
+      with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -18,5 +27,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: double
+      with resolved type:
+        double
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX64: signed int
+      with resolved type:
+        signed int
     ... to:
+      char
+    with resolved type:
       char
   (types:
Index: tests/meta/.expect/archVast.oast.x86.txt
===================================================================
--- tests/meta/.expect/archVast.oast.x86.txt	(revision cd6a6ffee16b2e0915b5be3211ed86e60fd011e9)
+++ tests/meta/.expect/archVast.oast.x86.txt	(revision 1db306ace498d673ec16b9dc9be553c62c38774e)
@@ -3,4 +3,6 @@
   Name: FX86
 ... to:
+  char
+with resolved type:
   char Alternatives are:
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
@@ -9,5 +11,12 @@
       ... returning nothing
 
+      with resolved type:
+        pointer to function
+          accepting unspecified arguments
+        ... returning nothing
+
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -18,5 +27,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: double
+      with resolved type:
+        double
     ... to:
+      char
+    with resolved type:
       char
   (types:
@@ -27,5 +40,9 @@
 Cost ( 1, 0, 0, 0, 0, 0, 0 ): Explicit Cast of:
       Variable Expression: FX86: signed int
+      with resolved type:
+        signed int
     ... to:
+      char
+    with resolved type:
       char
   (types:
