By Chris Lindsey of Green Mayo Studios Data structures ported from Michael Baczynski's AS3 Data Structures For Game Developers.