iMessage has tons of different items and internally they are fairly inconsistent. To create uniform types out of chaos, I created a wrapping system. All chat items are contained within an object describing which type of item it is.
All chat items extend the properties below! They are not listed in their individual tables, but they do possess these properties.