Index: src/ResolvExpr/CastCost.cc
===================================================================
--- src/ResolvExpr/CastCost.cc	(revision 6137fbb8754ddae70e06461364ee568113aaa3e3)
+++ src/ResolvExpr/CastCost.cc	(revision 150ec335b7adf4676c0cdefdf1c5851bb87eba35)
@@ -24,4 +24,9 @@
 #include "typeops.h"                     // for typesCompatibleIgnoreQualifiers
 
+#if 0
+#define PRINT(x) x
+#else
+#define PRINT(x)
+#endif
 
 namespace ResolvExpr {
@@ -52,9 +57,21 @@
 			} // if
 		} // if
+
+		PRINT(
+			std::cerr << "castCost ::: src is ";
+			src->print( std::cerr );
+			std::cerr << std::endl << "dest is ";
+			dest->print( std::cerr );
+			std::cerr << std::endl << "env is" << std::endl;
+			env.print( std::cerr, 8 );
+		)
+
 		if ( typesCompatibleIgnoreQualifiers( src, dest, indexer, env ) ) {
+			PRINT( std::cerr << "compatible!" << std::endl; )
 			return Cost::zero;
 		} else if ( dynamic_cast< VoidType* >( dest ) ) {
 			return Cost::safe;
 		} else if ( ReferenceType * refType = dynamic_cast< ReferenceType * > ( dest ) ) {
+			PRINT( std::cerr << "conversionCost: dest is reference" << std::endl; )
 			return convertToReferenceCost( src, refType, indexer, env, [](Type * t1, Type * t2, const TypeEnvironment & env, const SymTab::Indexer & indexer) {
 				return ptrsCastable( t1, t2, env, indexer );
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 6137fbb8754ddae70e06461364ee568113aaa3e3)
+++ src/ResolvExpr/ConversionCost.cc	(revision 150ec335b7adf4676c0cdefdf1c5851bb87eba35)
@@ -306,8 +306,8 @@
 		// recursively compute conversion cost from T1 to T2.
 		// cv can be safely dropped because of 'implicit dereference' behavior.
-		refType->get_base()->accept( *this );
-		if ( refType->get_base()->get_qualifiers() == dest->get_qualifiers() ) {
+		refType->base->accept( *this );
+		if ( refType->base->get_qualifiers() == dest->get_qualifiers() ) {
 			cost.incReference();  // prefer exact qualifiers
-		} else if ( refType->get_base()->get_qualifiers() < dest->get_qualifiers() ) {
+		} else if ( refType->base->get_qualifiers() < dest->get_qualifiers() ) {
 			cost.incSafe(); // then gaining qualifiers
 		} else {
@@ -321,5 +321,5 @@
 	void ConversionCost::visit(StructInstType *inst) {
 		if ( StructInstType *destAsInst = dynamic_cast< StructInstType* >( dest ) ) {
-			if ( inst->get_name() == destAsInst->get_name() ) {
+			if ( inst->name == destAsInst->name ) {
 				cost = Cost::zero;
 			} // if
@@ -328,6 +328,6 @@
 
 	void ConversionCost::visit(UnionInstType *inst) {
-		if ( StructInstType *destAsInst = dynamic_cast< StructInstType* >( dest ) ) {
-			if ( inst->get_name() == destAsInst->get_name() ) {
+		if ( UnionInstType *destAsInst = dynamic_cast< UnionInstType* >( dest ) ) {
+			if ( inst->name == destAsInst->name ) {
 				cost = Cost::zero;
 			} // if
