@RuntimeType
    public Object intercept( @This final Object receiver, @Origin final Method method,
            @AllArguments final Object[] parameters,
            @FieldProxy( INTERCEPTOR_FIELD_NAME ) StepInterceptorGetterSetter stepInterceptorGetter )
            throws Throwable{
        // this intercepted method does not have a non-abstract super method
        StepInterceptor interceptor = (StepInterceptor) stepInterceptorGetter.getValue();

        if( interceptor == null ) {
            return null;
        }

        return interceptor.intercept( receiver, method, parameters, () -> null );
    }
StepInterceptorImpl that uses ByteBuddy Method interceptor with annotations for intercepting JGiven methods
jgiven-core/src/main/java/com/tngtech/jgiven/impl/intercept/ByteBuddyMethodInterceptor.java