Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 768bd55614144e92dcfe87a8d037c982f47a2e53)
+++ src/ControlStruct/MLEMutator.cc	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Oct 22 17:22:44 2019
-// Update Count     : 220
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Jan 16 15:33:00 2020
+// Update Count     : 221
 //
 
@@ -331,4 +331,11 @@
 	}
 
+	void MLEMutator::premutate( FinallyStmt * ) {
+		GuardAction([this, old = std::move(enclosingControlStructures)]() {
+			enclosingControlStructures = std::move(old);
+		});
+		enclosingControlStructures = std::list<Entry>();
+	}
+
 	void MLEMutator::premutate( CaseStmt *caseStmt ) {
 		visit_children = false;
Index: src/ControlStruct/MLEMutator.h
===================================================================
--- src/ControlStruct/MLEMutator.h	(revision 768bd55614144e92dcfe87a8d037c982f47a2e53)
+++ src/ControlStruct/MLEMutator.h	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
@@ -9,8 +9,10 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Oct 22 17:22:47 2019
-// Update Count     : 45
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Jan 16 12:46:00 2020
+// Update Count     : 46
 //
+
+// Can anyone figure out what MLE stands for?
 
 #pragma once
@@ -49,4 +51,5 @@
 		void premutate( TryStmt *tryStmt );
 		Statement * postmutate( TryStmt *tryStmt );
+		void premutate( FinallyStmt *finallyStmt );
 
 		Statement *mutateLoop( Statement *bodyLoop, Entry &e );
Index: tests/.expect/except-finally-error.txt
===================================================================
--- tests/.expect/except-finally-error.txt	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
+++ tests/.expect/except-finally-error.txt	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
@@ -0,0 +1,4 @@
+except-finally-error.cfa:7:1 error: 'break' outside a loop, 'switch', or labelled block
+except-finally-error.cfa:15:1 error: 'continue' target must be an enclosing loop: 
+except-finally-error.cfa:32:1 error: 'break' target must be an enclosing control structure: mainLoop
+except-finally-error.cfa:40:1 error: 'continue' target must be an enclosing loop: mainLoop
Index: tests/except-finally-error.cfa
===================================================================
--- tests/except-finally-error.cfa	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
+++ tests/except-finally-error.cfa	(revision d62806c676c75569ea896d4e3fb1ce9f9c780bd5)
@@ -0,0 +1,61 @@
+// All of these should be caught as long as the check remains in the same
+// pass. (Although not even all of the checks are in place yet.)
+
+void break_in_finally() {
+	while (true) {
+		try {} finally {
+			break;
+		}
+	}
+}
+
+void continue_in_finally() {
+	while (true) {
+		try {} finally {
+			continue;
+		}
+	}
+}
+
+void goto_in_finally() {
+	while (true) {
+		try {} finally {
+			goto end_of_function;
+		}
+	}
+	end_of_function: {}
+}
+
+void labelled_break_in_finally() {
+	mainLoop: while (true) {
+		try {} finally {
+			break mainLoop;
+		}
+	}
+}
+
+void labelled_continue_in_finally() {
+	mainLoop: while (true) {
+		try {} finally {
+			continue mainLoop;
+		}
+	}
+}
+
+void void_return_in_finally() {
+	try {} finally {
+		return;
+	}
+}
+
+int value_return_in_finally() {
+	try {} finally {
+		return -7;
+	}
+
+}
+
+void main() {
+	// Should not compile.
+	return 1;
+}
