Helper class for internal use only. This allows to call a given method and
convert the result to a boolean. It will do this by caching the method call
as well as the "asBoolean" in
CallSiteArray fashion. "asBoolean" will not be
called if the result is null or a Boolean. In case of null we return false and
in case of a Boolean we simply unbox. This logic is designed after the one present
in
DefaultTypeTransformation.castToBoolean(Object). The purpose of
this class is to avoid the slow "asBoolean" call in that method.
The nature of this class allows a per instance caching instead of a per class
caching like the normal
CallSiteArray logic.