Recently I have rediscovered lego. Its very useful to build a model
of that data structure you want. When you have your physical model 
then its easy to think out all kinds of senarios that data structure 
possible could be used for.

Here is a picture of my lego model:
http://aeditor.rubyforge.org/data/lego_model_of_caching_system.jpg

I wanted to make a new improved syntax coloring system for my 
editor, in paticular a robust caching scheme. The old caching mechanism
sometimes didn't render dirty lines, other times it didn't flag lines as
being dirty, ofthen it did too much work by rendering more lines than
necessary....  and yet other times it crashed.

My new data structure is robust and doesn't do more work than absolutely 
necesary. I don't believe that I would have gotten this far without lego.

--
Simon Strandgaard