Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision a4887832b2954c416890b738e1429e4abd5bda71)
+++ src/InitTweak/InitTweak.cc	(revision 040334e1377f9d717d5f1b39e87eaec92fdeaa88)
@@ -10,6 +10,6 @@
 // Created On       : Fri May 13 11:26:36 2016
 // Last Modified By : Andrew Beach
-// Last Modified On : Fri Nov 19 19:22:00 2021
-// Update Count     : 19
+// Last Modified On : Mon Dec  6 13:21:00 2021
+// Update Count     : 20
 //
 
@@ -1191,14 +1191,30 @@
 	}
 
-	bool isCopyFunction( const ast::FunctionDecl * decl ) {
-		const ast::FunctionType * ftype = decl->type;
-		if ( ftype->params.size() != 2 ) return false;
-
-		const ast::Type * t1 = getPointerBase( ftype->params.front() );
-		if ( ! t1 ) return false;
-		const ast::Type * t2 = ftype->params.back();
-
-		return ResolvExpr::typesCompatibleIgnoreQualifiers( t1, t2, ast::SymbolTable{} );
-	}
+bool isAssignment( const ast::FunctionDecl * decl ) {
+	return isAssignment( decl->name ) && isCopyFunction( decl );
+}
+
+bool isDestructor( const ast::FunctionDecl * decl ) {
+	return isDestructor( decl->name );
+}
+
+bool isDefaultConstructor( const ast::FunctionDecl * decl ) {
+	return isConstructor( decl->name ) && 1 == decl->params.size();
+}
+
+bool isCopyConstructor( const ast::FunctionDecl * decl ) {
+	return isConstructor( decl->name ) && 2 == decl->params.size();
+}
+
+bool isCopyFunction( const ast::FunctionDecl * decl ) {
+	const ast::FunctionType * ftype = decl->type;
+	if ( ftype->params.size() != 2 ) return false;
+
+	const ast::Type * t1 = getPointerBase( ftype->params.front() );
+	if ( ! t1 ) return false;
+	const ast::Type * t2 = ftype->params.back();
+
+	return ResolvExpr::typesCompatibleIgnoreQualifiers( t1, t2, ast::SymbolTable{} );
+}
 
 	const FunctionDecl * isAssignment( const Declaration * decl ) {
Index: src/InitTweak/InitTweak.h
===================================================================
--- src/InitTweak/InitTweak.h	(revision a4887832b2954c416890b738e1429e4abd5bda71)
+++ src/InitTweak/InitTweak.h	(revision 040334e1377f9d717d5f1b39e87eaec92fdeaa88)
@@ -10,6 +10,6 @@
 // Created On       : Fri May 13 11:26:36 2016
 // Last Modified By : Andrew Beach
-// Last Modified On : Fri Nov 19 14:18:00 2021
-// Update Count     : 7
+// Last Modified On : Mon Dec  6 13:20:00 2021
+// Update Count     : 8
 //
 
@@ -31,4 +31,8 @@
 	const FunctionDecl * isCopyConstructor( const Declaration * decl );
 	const FunctionDecl * isCopyFunction( const Declaration * decl, const std::string & fname );
+	bool isAssignment( const ast::FunctionDecl * decl );
+	bool isDestructor( const ast::FunctionDecl * decl );
+	bool isDefaultConstructor( const ast::FunctionDecl * decl );
+	bool isCopyConstructor( const ast::FunctionDecl * decl );
 	bool isCopyFunction( const ast::FunctionDecl * decl );
 
Index: src/Validate/Autogen.cpp
===================================================================
--- src/Validate/Autogen.cpp	(revision a4887832b2954c416890b738e1429e4abd5bda71)
+++ src/Validate/Autogen.cpp	(revision 040334e1377f9d717d5f1b39e87eaec92fdeaa88)
@@ -10,6 +10,6 @@
 // Created On       : Thu Dec  2 13:44:00 2021
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Jan 26 13:39:00 2022
-// Update Count     : 0
+// Last Modified On : Thr Jan 27  9:29:00 2022
+// Update Count     : 1
 //
 
@@ -36,4 +36,5 @@
 #include "GenPoly/ScopedSet.h"     // for ScopedSet, ScopedSet<>::iterator
 #include "InitTweak/GenInit.h"     // for fixReturnStatements
+#include "InitTweak/InitTweak.h"   // for isAssignment, isCopyConstructor
 #include "SymTab/Mangler.h"        // for Mangler
 #include "CompilationState.h"
