protected function when($condition, $value, $default = null)
    {
        return $condition
            ? value($value)
            : (func_num_args() === 3 ? value($default) : new MissingValue);
    }