But would be even harder to wrap your head around if you tried to implement similar capabilities in Java.