For JvSynchronize, why not make `synchronized' a macro (or slightly name mangled) that expands into the current JvSynchronize syntax? So C++ code would look like: { synchronized (OBJ); CODE; } which is more in line with the Java syntax.