Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 73f1b1c70b1a01a4653725904c19b05ccdcb2a4e)
+++ src/ResolvExpr/ConversionCost.cc	(revision e6b42e7a226ea0d0e4d4f46d30734a2ee84d96cb)
@@ -520,7 +520,5 @@
 		return convertToReferenceCost( src, refType, srcIsLvalue, symtab, env, localPtrsAssignable );
 	} else {
-		ast::Pass<ConversionCost_new> converter( dst, srcIsLvalue, symtab, env, localConversionCost );
-		src->accept( converter );
-		return converter.core.cost;
+		return ast::Pass<ConversionCost_new>::read( src, dst, srcIsLvalue, symtab, env, localConversionCost );
 	}
 }
@@ -563,7 +561,5 @@
 			}
 		} else {
-			ast::Pass<ConversionCost_new> converter( dst, srcIsLvalue, symtab, env, localConversionCost );
-			src->accept( converter );
-			return converter.core.cost;
+			return ast::Pass<ConversionCost_new>::read( src, dst, srcIsLvalue, symtab, env, localConversionCost );
 		}
 	} else {
Index: src/ResolvExpr/ConversionCost.h
===================================================================
--- src/ResolvExpr/ConversionCost.h	(revision 73f1b1c70b1a01a4653725904c19b05ccdcb2a4e)
+++ src/ResolvExpr/ConversionCost.h	(revision e6b42e7a226ea0d0e4d4f46d30734a2ee84d96cb)
@@ -88,4 +88,5 @@
 	static size_t traceId;
 	Cost cost;
+	Cost result() { return cost; }
 
 	ConversionCost_new( const ast::Type * dst, bool srcIsLvalue, const ast::SymbolTable & symtab,
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 73f1b1c70b1a01a4653725904c19b05ccdcb2a4e)
+++ src/ResolvExpr/Resolver.cc	(revision e6b42e7a226ea0d0e4d4f46d30734a2ee84d96cb)
@@ -965,13 +965,13 @@
 		/// Finds deleted expressions in an expression tree
 		struct DeleteFinder_new final : public ast::WithShortCircuiting {
-			const ast::DeletedExpr * delExpr = nullptr;
+			const ast::DeletedExpr * result = nullptr;
 
 			void previsit( const ast::DeletedExpr * expr ) {
-				if ( delExpr ) { visit_children = false; }
-				else { delExpr = expr; }
+				if ( result ) { visit_children = false; }
+				else { result = expr; }
 			}
 
 			void previsit( const ast::Expr * ) {
-				if ( delExpr ) { visit_children = false; }
+				if ( result ) { visit_children = false; }
 			}
 		};
@@ -980,7 +980,5 @@
 	/// Check if this expression is or includes a deleted expression
 	const ast::DeletedExpr * findDeletedExpr( const ast::Expr * expr ) {
-		ast::Pass<DeleteFinder_new> finder;
-		expr->accept( finder );
-		return finder.core.delExpr;
+		return ast::Pass<DeleteFinder_new>::read( expr );
 	}
 
