Extending the Java Programming Language with Generators