diff --git a/Language/Java/Parser.hs b/Language/Java/Parser.hs
--- a/Language/Java/Parser.hs
+++ b/Language/Java/Parser.hs
@@ -44,7 +44,6 @@
 import Control.Monad ( ap )
 import Control.Applicative ( (<$>), (<$), (<*) )
 
-
 type P = Parsec [L Token] ()
 
 -- A trick to allow >> and >>=, normally infixr 1, to be
@@ -329,6 +328,7 @@
     <|> tok KW_Native      >> return Native
     <|> tok KW_Transient   >> return Transient
     <|> tok KW_Volatile    >> return Volatile
+    <|> tok KW_Synchronized >> return Synchronised
     <|> Annotation <$> annotation
 
 annotation :: P Annotation
@@ -557,8 +557,8 @@
 
 forInit :: P ForInit
 forInit = (do
-    (m,t,vds) <- localVarDecl
-    return $ ForLocalVars m t vds) <|>
+    try (do (m,t,vds) <- localVarDecl
+            return $ ForLocalVars m t vds)) <|>
     (seplist1 stmtExp comma >>= return . ForInitExps)
 
 forUp :: P [Exp]
@@ -843,13 +843,14 @@
         return $ \p -> PrimaryMethodCall p [] i as
 
 methodInvocationExp :: P Exp
-methodInvocationExp = try (MethodInv <$> methodInvocationNPS) <|> do
+methodInvocationExp = try (do
     p <- primaryNPS
     ss <- list primarySuffix
     let mip = foldl (\a s -> s a) p ss
     case mip of
      MethodInv _ -> return mip
-     _ -> fail ""
+     _ -> fail "") <|>
+     (MethodInv <$> methodInvocationNPS)
 
 {-
 methodInvocation :: P MethodInvocation
diff --git a/Language/Java/Syntax.hs b/Language/Java/Syntax.hs
--- a/Language/Java/Syntax.hs
+++ b/Language/Java/Syntax.hs
@@ -155,6 +155,7 @@
     | Volatile
     | Native
     | Annotation Annotation
+    | Synchronised
   DERIVE
 
 -- | Annotations have three different forms: no-parameter, single-parameter or key-value pairs
diff --git a/language-java.cabal b/language-java.cabal
--- a/language-java.cabal
+++ b/language-java.cabal
@@ -1,5 +1,5 @@
 Name:                   language-java
-Version:                0.2.3
+Version:                0.2.4
 License:                BSD3
 License-File:           LICENSE
 Author:                 Niklas Broberg
