Hi João, thanks for the feedback and sorry for the late reply. 

We noticed that sometimes our threads would come into a deadlock upon loading the AbstractPathProcessor class. This didn't always happen, so a certain amount of patience was needed to troubleshoot this bug, which we came to realize was an JVM bug.

After some investigation with jstack and googling around we came to the conclusion that even though thread safety is garanteed in static initialization as detailed in the Java Language Specification (section 12.4.2, http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4.2), there are reported cases of deadlocks occurring when the class loader tried to load in concurrent threads an entity with static blocks. 

Specifically when the entity has a static field depending on the entity itself, which is the case: AbstractPathProcessor has a Map < String, AbstractPathProcessor >.
For further investigation of the problem, please briefly read:
http://ramblingabout.wordpress.com/2008/04/10/deadlock-quiz-the-answer/

After thorough testing, we couldn't replicate the bug with the proposed change in this pull request. 

Even thought we believe that synchronized code will not be such a performance hog in this context, alternative solutions to this problem are welcome! :)

Thanks