Index: src/AST/Node.hpp
===================================================================
--- src/AST/Node.hpp	(revision 400b8bec42ab40f3a00bc24c1485bc941ead2174)
+++ src/AST/Node.hpp	(revision 2377ca2ae5f29b9a9faf225df848aa347d834fb6)
@@ -103,6 +103,6 @@
 
 /// Mutate a node field (only clones if not equal to existing value)
-template<typename node_t, typename parent_t, typename field_t, typename assn_t>
-const node_t * mutate_field( const node_t * node, field_t parent_t::* field, assn_t && val ) {
+template<typename node_t, typename super_t, typename field_t, typename assn_t>
+const node_t * mutate_field( const node_t * node, field_t super_t::* field, assn_t && val ) {
 	// skip mutate if equivalent
 	if ( node->*field == val ) return node;
@@ -115,7 +115,7 @@
 
 /// Mutate a single index of a node field (only clones if not equal to existing value)
-template<typename node_t, typename parent_t, typename coll_t, typename ind_t, typename field_t>
+template<typename node_t, typename super_t, typename coll_t, typename ind_t, typename field_t>
 const node_t * mutate_field_index(
-	const node_t * node, coll_t parent_t::* field, ind_t i, field_t && val
+	const node_t * node, coll_t super_t::* field, ind_t i, field_t && val
 ) {
 	// skip mutate if equivalent
@@ -129,6 +129,6 @@
 
 /// Mutate an entire indexed collection by cloning to accepted value
-template<typename node_t, typename parent_t, typename coll_t>
-const node_t * mutate_each( const node_t * node, coll_t parent_t::* field, Visitor & v ) {
+template<typename node_t, typename super_t, typename coll_t>
+const node_t * mutate_each( const node_t * node, coll_t super_t::* field, Visitor & v ) {
 	for ( unsigned i = 0; i < (node->*field).size(); ++i ) {
 		node = mutate_field_index( node, field, i, (node->*field)[i]->accept( v ) );
Index: src/AST/Pass.impl.hpp
===================================================================
--- src/AST/Pass.impl.hpp	(revision 400b8bec42ab40f3a00bc24c1485bc941ead2174)
+++ src/AST/Pass.impl.hpp	(revision 2377ca2ae5f29b9a9faf225df848aa347d834fb6)
@@ -399,13 +399,13 @@
 
 	template< typename core_t >
-	template<typename node_t, typename parent_t, typename child_t>
+	template<typename node_t, typename super_t, typename field_t>
 	void ast::Pass< core_t >::maybe_accept(
 		const node_t * & parent,
-		child_t parent_t::*child
+		field_t super_t::*field
 	) {
-		static_assert( std::is_base_of<parent_t, node_t>::value, "Error deducing member object" );
-
-		if(__pass::skip(parent->*child)) return;
-		const auto & old_val = __pass::get(parent->*child, 0);
+		static_assert( std::is_base_of<super_t, node_t>::value, "Error deducing member object" );
+
+		if(__pass::skip(parent->*field)) return;
+		const auto & old_val = __pass::get(parent->*field, 0);
 
 		static_assert( !std::is_same<const ast::Node * &, decltype(old_val)>::value, "ERROR");
@@ -417,5 +417,5 @@
 		if( new_val.differs ) {
 			auto new_parent = __pass::mutate<core_t>(parent);
-			new_val.apply(new_parent, child);
+			new_val.apply(new_parent, field);
 			parent = new_parent;
 		}
@@ -423,10 +423,10 @@
 
 	template< typename core_t >
-	template<typename node_t, typename parent_t, typename child_t>
+	template<typename node_t, typename super_t, typename field_t>
 	void ast::Pass< core_t >::maybe_accept_as_compound(
 		const node_t * & parent,
-		child_t parent_t::*child
+		field_t super_t::*child
 	) {
-		static_assert( std::is_base_of<parent_t, node_t>::value, "Error deducing member object" );
+		static_assert( std::is_base_of<super_t, node_t>::value, "Error deducing member object" );
 
 		if(__pass::skip(parent->*child)) return;
