Javagen merge

This includes the work of Arthur Beneman, merged with master.