What Makes Code Hard to Read: Visual Patterns of Complexity (2023)