While debugging a java program, you want to inspect the content of variables. But for variables that hold a lambda function, just an ID is displayed. You know that a lambda is actually syntactic sugar for an implementation of a functional interface like Runnable or Function, so you try to "Open actual type", but it jumps to the interface instead.
This plugin provides the "Go To Lambda Definition" command that jumps to the implementation of the selected lambda variable.
Download the released jar and put it into your eclipse installation's dropins folder. Upon restart of eclipse, the plugin is installed and the command is available.
The Java compiler converts the lambda function into a static method on the class where it is defined. Then, a small class that implements the correct functional interface (like Consumer) is generated. The function of this class that implements the functional interface (like accept) processes arguments and then invokes the static function. At runtime, an instance of this class is assigned to the variable, in place of the lambda function.
When clicking "Go To Lambda Definition", the underlying type of the variable's value is retrieved, which is the generated class. Via JDWP the bytecode of the accept method is loaded. We parse the bytecode and search for the invokestatic opcode, whose argument is a MethodRef index. This index is looked up in the constant pool of the generated class (again via JDWP), and the name of the static function is extracted from there.
In contrast to the generated class, the static method has location information available via JDWP, so jumping to this function is now easily implemented, similar to existing eclipse commands.
Feel free to create issues and pull requests.

