class Test { class Message { public T data; } class Result<T> { public boolean isSuccessful() { return false; } } interface handlerReturn { R process(T m); } private void process(handlerReturn h) {} interface handler { void process(T m); } private void process(handler h) {} public static void main(String[] args) { Test t = new Test(); t.>>process(m -> { if (m.data.isSuccessful()); }); } }