Source: http://mvolkmann.github.io/JavaUserGroup/AWTEventModel.pdf