Both UseKind and NodeResultMask may convey representation. The possible representations are Value, Double, and Int52. We should really have a separate enum for Representation. NodeResultMask could still internally use the same format as it does now. Then we could also have the notion of "guaranteeing" that a node returns an Int32, Number, or Boolean - but we should encapsulate this somehow and separate it from NodeResultMask. That would allow us to get rid of horrible things like canonicalResultRepresentation().