Due to the data structure to being intended immutable, the hash value cannot change during object lifetime. This commit caches the value upon first evaluation.