Manually merge changes from java8 branch.
It never ends! More Java 8 retrofitting.