Index: src/Common/CodeLocation.h
===================================================================
--- src/Common/CodeLocation.h	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
+++ src/Common/CodeLocation.h	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
@@ -0,0 +1,70 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CodeLocation.h --
+//
+// Author           : Andrew Beach
+// Created On       : Thr Aug 17 11:23:00 2017
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 14:07:00 2017
+// Update Count     : 0
+//
+
+#pragma once
+
+#include <string>
+
+struct CodeLocation {
+	int linenumber;
+	std::string filename;
+
+	/// Create a new unset CodeLocation.
+		CodeLocation()
+		: linenumber( -1 )
+		, filename("")
+	{}
+
+	/// Create a new CodeLocation with the given values.
+	CodeLocation( const char* filename, int lineno )
+		: linenumber( lineno )
+		, filename(filename ? filename : "")
+	{}
+
+	CodeLocation( const CodeLocation& rhs ) = default;
+
+	bool isSet () const {
+		return -1 != linenumber;
+	}
+
+	bool isUnset () const {
+		return !isSet();
+	}
+
+	void unset () {
+		linenumber = -1;
+		filename = "";
+	}
+
+	// Use field access for set.
+
+	bool followedBy( CodeLocation const & other, int seperation ) {
+		return (linenumber + seperation == other.linenumber &&
+		        filename == other.filename);
+	}
+
+	bool operator==( CodeLocation const & other ) {
+		return followedBy( other, 0 );
+	}
+
+	bool operator!=( CodeLocation const & other ) {
+		return !(*this == other);
+	}
+};
+
+inline std::string to_string( const CodeLocation& location ) {
+    return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
+}
+
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/Common/SemanticError.h	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:18:59 2017
-// Update Count     : 6
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 14:01:00 2017
+// Update Count     : 7
 //
 
@@ -21,5 +21,5 @@
 #include <string>     // for string
 
-#include "utility.h"  // for CodeLocation, toString
+#include "CodeLocation.h"  // for CodeLocation, toString
 
 struct error {
Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/Common/utility.h	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:19:13 2017
-// Update Count     : 33
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 11:38:00 2017
+// Update Count     : 34
 //
 
@@ -341,42 +341,4 @@
 }
 
-struct CodeLocation {
-	int linenumber;
-	std::string filename;
-
-	/// Create a new unset CodeLocation.
-	CodeLocation()
-		: linenumber( -1 )
-		, filename("")
-	{}
-
-	/// Create a new CodeLocation with the given values.
-	CodeLocation( const char* filename, int lineno )
-		: linenumber( lineno )
-		, filename(filename ? filename : "")
-	{}
-
-	CodeLocation( const CodeLocation& rhs ) = default;
-
-	bool isSet () const {
-		return -1 != linenumber;
-	}
-
-	bool isUnset () const {
-		return !isSet();
-	}
-
-	void unset () {
-		linenumber = -1;
-		filename = "";
-	}
-
-	// Use field access for set.
-};
-
-inline std::string to_string( const CodeLocation& location ) {
-	return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
-}
-
 // Local Variables: //
 // tab-width: 4 //
Index: src/ControlStruct/LabelGenerator.cc
===================================================================
--- src/ControlStruct/LabelGenerator.cc	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/ControlStruct/LabelGenerator.cc	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
@@ -9,10 +9,11 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Jun 23 12:18:34 2015
-// Update Count     : 13
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 14 14:14:00 2015
+// Update Count     : 14
 //
 
-#include <iostream>             // for operator<<, basic_ostream, ostringstream
+#include <iostream>             // for operator<<, basic_ostream
+#include <sstream>              // for ostringstream
 #include <list>                 // for list
 
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/Parser/ParseNode.h	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:28:16 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Aug 16 16:46:48 2017
-// Update Count     : 794
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 13:46:00 2017
+// Update Count     : 795
 //
 
@@ -24,7 +24,8 @@
 #include <string>                  // for string
 
+#include "Common/CodeLocation.h"   // for CodeLocation
 #include "Common/SemanticError.h"  // for SemanticError
 #include "Common/UniqueName.h"     // for UniqueName
-#include "Common/utility.h"        // for maybeClone, CodeLocation, maybeBuild
+#include "Common/utility.h"        // for maybeClone, maybeBuild
 #include "Parser/LinkageSpec.h"    // for Spec
 #include "SynTree/Expression.h"    // for Expression, ConstantExpr (ptr only)
Index: src/SynTree/BaseSyntaxNode.h
===================================================================
--- src/SynTree/BaseSyntaxNode.h	(revision 936e9f47be7f2533aa23362d452e6b7a2a5c72fa)
+++ src/SynTree/BaseSyntaxNode.h	(revision 21f0aa833ab7b8f310f78ff014b4dd33de1d0e02)
@@ -9,13 +9,13 @@
 // Author           : Thierry Delisle
 // Created On       : Tue Feb 14 07:44:20 2017
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 13:44:00
+// Update Count     : 1
 //
 
 #pragma once
 
-#include "Common/utility.h"
-#include "Visitor.h"
+#include "Common/CodeLocation.h"
+class Visitor;
 
 class BaseSyntaxNode {
