Index: src/main/org/codehaus/groovy/antlr/groovy.g
===================================================================
--- src/main/org/codehaus/groovy/antlr/groovy.g	(revision 21830)
+++ src/main/org/codehaus/groovy/antlr/groovy.g	(revision )
@@ -1663,7 +1663,7 @@
 multicatch_types
 {Token first = LT(1);}
     :
-        nls!
+        nls! FINAL?
         classOrInterfaceType[false]
         (
             BOR! nls! classOrInterfaceType[false]
Index: src/test/groovy/MultiCatchTest.groovy
===================================================================
--- src/test/groovy/MultiCatchTest.groovy	(revision 21821)
+++ src/test/groovy/MultiCatchTest.groovy	(revision )
@@ -42,6 +42,36 @@
         assert catched
     }
 
+    void testRegularCatchWithFinalModifier() {
+        def catched = false
+        try {
+            throw new RuntimeException("Error")
+        } catch (final RuntimeException ex) {
+            catched = true
+        }
+        assert catched
+    }
+
+    void testRegularCatchWithFinalModifierAndDynamicType() {
+        def catched = false
+        try {
+            throw new RuntimeException("Error")
+        } catch (final def ex) {
+            catched = true
+        }
+        assert catched
+    }
+
+    void testRegularCatchWithFinalModifierWithoutType() {
+        def catched = false
+        try {
+            throw new RuntimeException("Error")
+        } catch (final ex) {
+            catched = true
+        }
+        assert catched
+    }
+
     void testMultipleCatchJavaStyle() {
         def catched = false
         try {
