merging c-semantics/java into liyi/java