When a technical problem gets unwieldy I like to spell things out as a bullet point list first, then sometimes on paper with crude drawings or written thoughts. Visualizing them helps me think.
@ocornut When I designed an editor with my team ages ago I draw on paper and cut out the basic component. I took all the pieces of paper in a meeting and I used them to explain the relationship between components. At the beginning everyone was laughing about the idea of working with tiny pieces of paper but then it was super use useful for everyone. It's much easier to think with something to view and touch.