Yet another closure proposal

I have carefully checked my archive and doesn't find any closure
proposal. It seems that be uptodate nowadays
you have to propose your own closure proposal.
So here is mine.

Everybody comes with its own closure proposal, why not me :)

Unlike BGGA, CICE, or FCM (not entirely sure about FCM),
i don't like the fact a closure is an instance of a class
that implement a method.
I prefer theJohn Rose's vision[2],
closure are at runtime method handler on autonomous
block of code.

There is another thing I don't like in the current BGGA proposal:
its syntax of function type,{int,int=>int} is not enough Javaish for me.
My proposal comes with a new way to declare a function type

I've separated my proposal in three parts:

function type declaration

how to use function type

closure syntax

and because i'am lenient, i will only provide example and not
a real spec.

static <T> void forEach(Collection<T> c,block<T> block) { for(T t:c) { // invoke is a magic method that execute the block of code, // a special rule in the compiler is able to infer its // parameter type. block.invoke(t); } }}

Closure syntax

Unlike function type syntax of BGGA, i like its closure
syntax so basically my proposed closure syntax is identical.
I have borrow method references from FCM even if
we need to add a special lookup rule (because methods and fields
are not in the same lookup space)
for that in the compiler.

Like BGGA, my proposal include non local transfer
and access to local variable (read and write)
but only for closures and not for any anonymous classes,
a closure is not an anonymous class.
Like any proposal, my proposal allow interface conversion
of function to interropt with legacy codes
but only if closure use final local variable.

At last, return is not allowed in a closure to avoid
stupid puzzlers but a replacement syntax exists.