public static function toBooleanValue($value)
    {
        if ($value === null || is_bool($value)) {
            return $value;
        }

        if (is_string($value)) {
            if (StringHelper::equals($value, "true", true)) {
                return true;
            } elseif (StringHelper::equals($value, "false", true)) {
                return false;
            }
        } elseif (is_numeric($value)) {
            if ($value == 1) {
                return true;
            } elseif ($value == 0) {
                return false;
            }
        }
        throw new TypeCoercionException("Could not coerce to type 'bool'.");
    }