DataMap class can fail in a confusing way if constructed incorrectly
Protect against consumer using a recursive data map creation callback