Type class which represents a tagged dictionary
Tagged dictionaries are used to represent complex Julia types. Using a struct instead of an actual Dictionary requires less memory allocation and allows us to use multiple dispatch on the resulting tree structure.
It inherits abstract dict just for show.
Type class for types which can occupuy the 'type' field in a struct
Create an index into the _backrefs entry in the root document
Cache the result of a calculation for a given input
Cache the input parameter to calculation as its output
Assumes the object is changed inplace. Allows objects to reference themselves.