Index: src/ControlStruct/LabelFixer.cc
===================================================================
--- src/ControlStruct/LabelFixer.cc	(revision 09f357ec00aefca93e05dd3cc0f865d2b3fe0881)
+++ src/ControlStruct/LabelFixer.cc	(revision 4f7b418b1407ea6b3c3af7a736618baceddcbbc1)
@@ -45,5 +45,6 @@
 	void LabelFixer::postvisit( FunctionDecl * functionDecl ) {
 		PassVisitor<MultiLevelExitMutator> mlem( resolveJumps(), generator );
-		functionDecl->acceptMutator( mlem );
+		// We start in the body so we can stop when we hit another FunctionDecl.
+		maybeMutate( functionDecl->statements, mlem );
 	}
 
Index: src/ControlStruct/MLEMutator.cc
===================================================================
--- src/ControlStruct/MLEMutator.cc	(revision 09f357ec00aefca93e05dd3cc0f865d2b3fe0881)
+++ src/ControlStruct/MLEMutator.cc	(revision 4f7b418b1407ea6b3c3af7a736618baceddcbbc1)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Tue Jan 21 10:33:00 2020
-// Update Count     : 222
+// Last Modified On : Wed Jan 22 11:50:00 2020
+// Update Count     : 223
 //
 
@@ -60,4 +60,8 @@
 		}
 	} // namespace
+
+	void MultiLevelExitMutator::premutate( FunctionDecl * ) {
+		visit_children = false;
+	}
 
 	// break labels have to come after the statement they break out of, so mutate a statement, then if they inform us
@@ -352,4 +356,12 @@
 		});
 		enclosingControlStructures = std::list<Entry>();
+		GuardValue( inFinally );
+		inFinally = true;
+	}
+
+	void MultiLevelExitMutator::premutate( ReturnStmt *returnStmt ) {
+		if ( inFinally ) {
+			SemanticError( returnStmt->location, "'return' may not appear in a finally clause" );
+		}
 	}
 
Index: src/ControlStruct/MLEMutator.h
===================================================================
--- src/ControlStruct/MLEMutator.h	(revision 09f357ec00aefca93e05dd3cc0f865d2b3fe0881)
+++ src/ControlStruct/MLEMutator.h	(revision 4f7b418b1407ea6b3c3af7a736618baceddcbbc1)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Tue Jan 21 10:33:00 2020
-// Update Count     : 47
+// Last Modified On : Wed Jan 22 11:50:00 2020
+// Update Count     : 48
 //
 
@@ -38,4 +38,6 @@
 		~MultiLevelExitMutator();
 
+		void premutate( FunctionDecl * );
+
 		void premutate( CompoundStmt *cmpndStmt );
 		Statement * postmutate( BranchStmt *branchStmt ) throw ( SemanticErrorException );
@@ -49,4 +51,5 @@
 		void premutate( SwitchStmt *switchStmt );
 		Statement * postmutate( SwitchStmt *switchStmt );
+		void premutate( ReturnStmt *returnStmt );
 		void premutate( TryStmt *tryStmt );
 		Statement * postmutate( TryStmt *tryStmt );
@@ -113,4 +116,5 @@
 		Label breakLabel;
 		LabelGenerator *generator;
+		bool inFinally = false;
 
 		template< typename LoopClass >
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 09f357ec00aefca93e05dd3cc0f865d2b3fe0881)
+++ src/Parser/lex.ll	(revision 4f7b418b1407ea6b3c3af7a736618baceddcbbc1)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sun Aug  4 20:53:47 2019
- * Update Count     : 719
+ * Last Modified On : Sat Feb  1 07:16:44 2020
+ * Update Count     : 724
  */
 
@@ -330,6 +330,6 @@
 				/* identifier */
 {identifier}	{ IDENTIFIER_RETURN(); }
-"`"{identifier}"`" {									// CFA
-	yytext[yyleng - 1] = '\0'; yytext += 1;				// SKULLDUGGERY: remove backquotes (ok to shorten?)
+"``"{identifier}"``" {									// CFA
+	yytext[yyleng - 2] = '\0'; yytext += 2;				// SKULLDUGGERY: remove backquotes (ok to shorten?)
 	IDENTIFIER_RETURN();
 }
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 09f357ec00aefca93e05dd3cc0f865d2b3fe0881)
+++ src/Parser/parser.yy	(revision 4f7b418b1407ea6b3c3af7a736618baceddcbbc1)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jan 17 14:54:55 2020
-// Update Count     : 4426
+// Last Modified On : Sat Feb  1 10:04:40 2020
+// Update Count     : 4440
 //
 
@@ -579,14 +579,4 @@
 	| '(' compound_statement ')'						// GCC, lambda expression
 		{ $$ = new ExpressionNode( new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >($2) ) ) ); }
-	| constant '`' IDENTIFIER							// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
-	| string_literal '`' IDENTIFIER						// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }
-	| IDENTIFIER '`' IDENTIFIER							// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( build_varref( $1 ) ) ) ); }
-	| tuple '`' IDENTIFIER								// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
-	| '(' comma_expression ')' '`' IDENTIFIER			// CFA, postfix call
-		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $5 ) ), $2 ) ); }
 	| type_name '.' identifier							// CFA, nested type
 		{ SemanticError( yylloc, "Qualified name is currently unimplemented." ); $$ = nullptr; }
@@ -642,4 +632,10 @@
 	| postfix_expression '(' argument_expression_list ')'
 		{ $$ = new ExpressionNode( build_func( $1, $3 ) ); }
+	| postfix_expression '`' identifier					// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+	| constant '`' identifier							// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), $1 ) ); }
+	| string_literal '`' identifier						// CFA, postfix call
+		{ $$ = new ExpressionNode( build_func( new ExpressionNode( build_postfix_name( $3 ) ), new ExpressionNode( $1 ) ) ); }
 	| postfix_expression '.' identifier
 		{ $$ = new ExpressionNode( build_fieldSel( $1, build_varref( $3 ) ) ); }
@@ -666,5 +662,5 @@
 	| '(' type_no_function ')' '@' '{' initializer_list_opt comma_opt '}' // CFA, explicit C compound-literal
 		{ $$ = new ExpressionNode( build_compoundLiteral( $2, (new InitializerNode( $6, true ))->set_maybeConstructed( false ) ) ); }
-	| '^' primary_expression '{' argument_expression_list '}' // CFA
+	| '^' primary_expression '{' argument_expression_list '}' // CFA, destructor call
 		{
 			Token fn;
