Index: src/ResolvExpr/CastCost.cc
===================================================================
--- src/ResolvExpr/CastCost.cc	(revision e3e16bcf91a7300a6d1f71eaad04e2f3f498cfc2)
+++ src/ResolvExpr/CastCost.cc	(revision 982832e24b58f99cf8d892fbb03bfd2c5cd57b15)
@@ -45,7 +45,6 @@
 				}
 			} else if ( ( namedType = indexer.lookupType( destAsTypeInst->get_name() ) ) ) {
-				TypeDecl *type = dynamic_cast< TypeDecl* >( namedType );
 				// all typedefs should be gone by this point
-				assert( type );
+				TypeDecl *type = strict_dynamic_cast< TypeDecl* >( namedType );
 				if ( type->get_base() ) {
 					return castCost( src, type->get_base(), indexer, env ) + Cost::safe;
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision e3e16bcf91a7300a6d1f71eaad04e2f3f498cfc2)
+++ src/ResolvExpr/ConversionCost.cc	(revision 982832e24b58f99cf8d892fbb03bfd2c5cd57b15)
@@ -92,5 +92,5 @@
 
 	Cost convertToReferenceCost( Type * src, Type * dest, int diff, const SymTab::Indexer & indexer, const TypeEnvironment & env, PtrsFunction func ) {
-		PRINT( std::cerr << "convert to reference cost..." << std::endl; )
+		PRINT( std::cerr << "convert to reference cost... diff " << diff << std::endl; )
 		if ( diff > 0 ) {
 			// TODO: document this
@@ -128,4 +128,5 @@
 			ReferenceType * destAsRef = dynamic_cast< ReferenceType * >( dest );
 			assert( diff == -1 && destAsRef );
+			PRINT( std::cerr << "dest is: " << dest << " / src is: " << src << std::endl; )
 			if ( typesCompatibleIgnoreQualifiers( src, destAsRef->get_base(), indexer, env ) ) {
 				PRINT( std::cerr << "converting compatible base type" << std::endl; )
