Oracle Program synthesis: challenges and opportunities Kayak: Safe Semantic Refactoring to Java Streams