def jlambda(arg_src, body_src)
arg_src = arg_src.split("\n").join
body_src = normalize_block_exp body_src
body_src += "return null;" unless body_src =~ /return/
classname = get_unique_classname
cls = get_pool.makeClass(classname, get_pool.get("java.lang.Object"))
cls.setModifiers(cls.getModifiers() & ~(:javassist_Modifier.jclass.ABSTRACT))
src = "public Object call(#{arg_src}) throws Exception {#{body_src}}"
m = :javassist_CtNewMethod.jclass.make(src,cls)
cls.addMethod(m)
cls.toClass
jobj = jnew(classname)
return lambda {|*args| jobj.call(*args) }
end