Hardest Java Patterns