Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision 47dd0d2c75578359efd1ebb654a94a61e5cc8a3d)
+++ src/AST/Pass.hpp	(revision 9617533e155cf1aae1d420ecd460ed1218f298f0)
@@ -48,4 +48,6 @@
 //
 // Several additional features are available through inheritance
+// | PureVisitor           - makes the visitor pure, it never modifies nodes in place and always
+//                           clones nodes it needs to make changes to
 // | WithTypeSubstitution  - provides polymorphic const TypeSubstitution * env for the
 //                           current expression
@@ -267,5 +269,5 @@
 /// Keep track of the polymorphic const TypeSubstitution * env for the current expression
 
-/// marker to force shallow copies in pass visit
+/// If used the visitor will always clone nodes.
 struct PureVisitor {};
 
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 47dd0d2c75578359efd1ebb654a94a61e5cc8a3d)
+++ src/AST/Pass.impl.hpp	(revision 9617533e155cf1aae1d420ecd460ed1218f298f0)
@@ -21,5 +21,4 @@
 
 #include "AST/TypeSubstitution.hpp"
-// #include "AST/Copy.hpp"
 
 #define VISIT_START( node ) \
@@ -329,5 +328,4 @@
 
 		if( __pass::differs(old_val, new_val) ) {
-			// auto new_parent = mutate(parent);
 			auto new_parent = __pass::mutate<core_t>(parent);
 			new_parent->*child = new_val;
Index: src/AST/TypeSubstitution.hpp
===================================================================
--- src/AST/TypeSubstitution.hpp	(revision 47dd0d2c75578359efd1ebb654a94a61e5cc8a3d)
+++ src/AST/TypeSubstitution.hpp	(revision 9617533e155cf1aae1d420ecd460ed1218f298f0)
@@ -46,5 +46,4 @@
 	template< typename SynTreeClass >
 	struct ApplyResult {
-		// const SynTreeClass * node;
 		ast::ptr<SynTreeClass> node;
 		int count;
@@ -187,5 +186,4 @@
 	assert( input );
 	Pass<Substituter> sub( *this, false );
-//	input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) );
 	input = strict_dynamic_cast< const SynTreeClass * >( input->accept( sub ) );
 	return { input, sub.core.subCount };
@@ -196,5 +194,4 @@
 	assert( input );
 	Pass<Substituter> sub( *this, true );
-//	input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) );
 	input = strict_dynamic_cast< const SynTreeClass * >( input->accept( sub ) );
 	return { input, sub.core.subCount };
Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 47dd0d2c75578359efd1ebb654a94a61e5cc8a3d)
+++ src/ResolvExpr/Unify.cc	(revision 9617533e155cf1aae1d420ecd460ed1218f298f0)
@@ -1113,6 +1113,4 @@
 			ast::Pass<TtypeExpander_new> expander{ tenv };
 
-			// ast::ptr<ast::TupleType> tuplec = tuple;
-			// ast::ptr<ast::TupleType> tuple2c = tuple2;
 			const ast::Type * flat = tuple->accept( expander );
 			const ast::Type * flat2 = tuple2->accept( expander );
Index: tests/errors/.expect/completeType.x86.txt
===================================================================
--- tests/errors/.expect/completeType.x86.txt	(revision 47dd0d2c75578359efd1ebb654a94a61e5cc8a3d)
+++ tests/errors/.expect/completeType.x86.txt	(revision 9617533e155cf1aae1d420ecd460ed1218f298f0)
@@ -6,7 +6,5 @@
     Name: x
 
-... to: nothing
-with resolved type:
-  void  Alternatives are:
+... to: nothing Alternatives are:
 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of:
       Application of
@@ -22,26 +20,8 @@
 
 
-        with resolved type:
-          pointer to forall
-            _89_4_DT: data type
-            function
-          ... with parameters
-            intrinsic pointer to instance of type _89_4_DT (not function type)
-          ... returning
-            _retval__operator_deref: reference to instance of type _89_4_DT (not function type)
-            ... with attributes:
-              Attribute with name: unused
-
-
       ... to arguments
         Variable Expression: x: pointer to instance of struct A with body 0
-        with resolved type:
-          pointer to instance of struct A with body 0
 
-      with resolved type:
-        reference to instance of struct A with body 0
     ... to: nothing
-    with resolved type:
-      void 
   (types:
     void 
@@ -63,26 +43,8 @@
 
 
-        with resolved type:
-          pointer to forall
-            _89_4_DT: data type
-            function
-          ... with parameters
-            intrinsic pointer to instance of type _89_4_DT (not function type)
-          ... returning
-            _retval__operator_deref: reference to instance of type _89_4_DT (not function type)
-            ... with attributes:
-              Attribute with name: unused
-
-
       ... to arguments
         Variable Expression: x: pointer to instance of struct B with body 1
-        with resolved type:
-          pointer to instance of struct B with body 1
 
-      with resolved type:
-        reference to instance of struct B with body 1
     ... to: nothing
-    with resolved type:
-      void 
   (types:
     void 
@@ -159,47 +121,7 @@
             ... returning nothing
 
-            with resolved type:
-              pointer to forall
-                _108_0_T: sized data type
-                ... with assertions
-                  ?=?: pointer to function
-                  ... with parameters
-                    reference to instance of type _108_0_T (not function type)
-                    instance of type _108_0_T (not function type)
-                  ... returning
-                    _retval__operator_assign: instance of type _108_0_T (not function type)
-                    ... with attributes:
-                      Attribute with name: unused
-
-
-                  ?{}: pointer to function
-                  ... with parameters
-                    reference to instance of type _108_0_T (not function type)
-                  ... returning nothing
-
-                  ?{}: pointer to function
-                  ... with parameters
-                    reference to instance of type _108_0_T (not function type)
-                    instance of type _108_0_T (not function type)
-                  ... returning nothing
-
-                  ^?{}: pointer to function
-                  ... with parameters
-                    reference to instance of type _108_0_T (not function type)
-                  ... returning nothing
-
-
-                function
-              ... with parameters
-                pointer to instance of type _108_0_T (not function type)
-              ... returning nothing
-
           ... to arguments
             Variable Expression: z: pointer to instance of type T (not function type)
-            with resolved type:
-              pointer to instance of type T (not function type)
 
-          with resolved type:
-            void 
         (types:
           void 
