Index: src/Concurrency/KeywordsNew.cpp
===================================================================
--- src/Concurrency/KeywordsNew.cpp	(revision 2cf3b87c585cfb9fa6dcb8ea9d77ad576fccea3b)
+++ src/Concurrency/KeywordsNew.cpp	(revision 56f519bcc1a437269e9985dafac21f245561e354)
@@ -10,6 +10,6 @@
 // Created On       : Tue Nov 16  9:53:00 2021
 // Last Modified By : Andrew Beach
-// Last Modified On : Tue Nov 30 11:04:00 2021
-// Update Count     : 0
+// Last Modified On : Wed Dec  1 11:24:00 2021
+// Update Count     : 1
 //
 
@@ -42,7 +42,8 @@
 	const ast::Stmt * postvisit( const ast::MutexStmt * stmt );
 
-	std::vector<const ast::DeclWithType *> findMutexArgs(
+	static std::vector<const ast::DeclWithType *> findMutexArgs(
 			const ast::FunctionDecl * decl, bool & first );
-	void validate( const ast::DeclWithType * decl );
+	static void validate( const ast::DeclWithType * decl );
+
 	ast::CompoundStmt * addDtorStatements( const ast::FunctionDecl* func, const ast::CompoundStmt *, const std::vector<const ast::DeclWithType *> &);
 	ast::CompoundStmt * addStatements( const ast::FunctionDecl* func, const ast::CompoundStmt *, const std::vector<const ast::DeclWithType *> &);
@@ -50,5 +51,5 @@
 	ast::CompoundStmt * addThreadDtorStatements( const ast::FunctionDecl* func, const ast::CompoundStmt * body, const std::vector<const ast::DeclWithType *> & args );
 
-public:
+private:
 	const ast::StructDecl * monitor_decl = nullptr;
 	const ast::StructDecl * guard_decl = nullptr;
@@ -98,11 +99,11 @@
 
 	// Monitors can't be constructed with mutual exclusion.
-	if ( CodeGen::isConstructor( decl->name ) && !is_first_argument_mutex ) {
-		SemanticError( decl, "constructors cannot have mutex parameters" );
+	if ( CodeGen::isConstructor( decl->name ) && is_first_argument_mutex ) {
+		SemanticError( decl, "constructors cannot have mutex parameters\n" );
 	}
 
 	// It makes no sense to have multiple mutex parameters for the destructor.
 	if ( isDtor && mutexArgs.size() != 1 ) {
-		SemanticError( decl, "destructors can only have 1 mutex argument" );
+		SemanticError( decl, "destructors can only have 1 mutex argument\n" );
 	}
 
@@ -172,12 +173,9 @@
 	for ( auto arg : decl->params ) {
 		const ast::Type * type = arg->get_type();
-		if ( !type->is_mutex() ) continue;
-
-		if ( once ) {
-			first = true;
-			once = false;
+		if ( type->is_mutex() ) {
+			if ( once ) first = true;
+			mutexArgs.push_back( arg.get() );
 		}
-
-		mutexArgs.push_back( arg.get() );
+		once = false;
 	}
 	return mutexArgs;
