When I put @EventHandler in any method, this method is executed in case some event occurs. How is this possible? How does it run and put information in the method parameter? I've heard that it invokes all annotations, but can you illustrate this in a few lines of code? This is interesting because some people say it's magic.