The State class maintains state for a collection of named items, with a varying number of properties defined.
It avoids the need to create a separate class for the item, and separate instances of these classes for each item, by storing the state in a 2 level hash table, improving performance when the number of items is likely to be large.
Stateaddname
                    
                key
                    
                val
                    
                Adds a property to an item.
addAllname
                    
                obj
                    
                Adds multiple properties to an item.
getname
                    
                key
                    
                For a given item, returns the value of the property requested, or undefined if not found.
The value of the supplied property.
getAllname
                    
                reference
                    
                For the given item, returns an object with all of the item's property/value pairs. By default the object returned is a shallow copy of the stored data, but passing in true as the second parameter will return a reference to the stored data.
An object with property/value pairs for the item.
removename
                    
                key
                    
                Removes a property from an item.
dataHash of attributes