oh, and @danny the tests all passed so I know functionally things happen correctly. The cache used is same as Jackson databind uses, a really simple LRU that when it hits a maximum count it clears and puts the newest item back in, so works well when you stay under the limit or eventually level off. The KotlinModule can be instantiated with a different cache size, but defaults to 512 which is probably larger than almost anyone would need.