The indirector actually expects returned objects to be instances of the model class for the specific indirection. The databindings code does not follow this expectation. Normal lookup doesn't rely on this, but the caching code does expect any returned object to respond to certain methods (expiration I think). So the answer is that we actually can't cache a false value, but for now nothing tries.