Перехват вызовов лямбда-выражений Java 8 с помощью Byte Buddy

Я пытаюсь перехватить вызовы методов и вызовов лямбда-выражений Java 8 с помощью Byte BuddyAgentBuilder следующее:

static {
  final Instrumentation inst = ByteBuddyAgent.install();
  new AgentBuilder.Default()
        .type(ElementMatchers.nameContainsIgnoreCase("foo"))
        .transform((builder, typeDescription) ->
                builder.method(ElementMatchers.any())
                        .intercept(MethodDelegation.to(LogInterceptor.class)))
        .installOn(inst);
}

public static class LogInterceptor {
  @RuntimeType
  public static Object log(@SuperCall Callable<?> superCall) throws Exception {
    System.out.println("yeah...");
    return superCall.call();
  }
}

Я использую Byte Buddy v0.7.1.

Это может перехватить следующееRunnable (анонимный класс):

FunnyFramework.callMeLater(new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello from inner class");
    }
});

и, конечно, любые вызовы объектов, определенных какнормальный (неанонимные) классы. Но перехват не работает для лямбда-выражения, как:

FunnyFramework.callMeLater(() -> {
    System.out.println("Hello from lambda");
});

Как я могу также перехватить вызовы лямбда-выражений? Там нет такого понятия, какLambdaInterceptor в Byte Buddy, насколько я знаю.

Ответы на вопрос(1)

Ваш ответ на вопрос