public function val($val = null, $store = true)
    {
        if (\func_num_args()) {
            // setting
            $this->setValue($val, $store);
        } else {
            if ($this->props['getValFormatted'] && !\in_array('getValFormatted', $this->callStack)) {
                $this->callStack[] = 'getValFormatted';
                $return = \call_user_func($this->props['getValFormatted'], $this);
                ArrayUtil::removeVal($this->callStack, 'getValFormatted');
                return $return;
            } else {
                return $this->valRaw();
            }
        }
    }