protected function selfValidate() {
        if ($this->_isUndefined && $this->onUndefinedIgnore) {
            $this->_safeVar = null;
            $this->_isValid = true;
            goto finish;
        }
        if ($this->isEmpty($this->_unsafeVar)) {
            if ($this->onEmptyIgnore) {
                $this->_safeVar = null;
                $this->_isValid = true;
                $this->_isEmpty = true;
                goto finish;
            } else if ($this->onEmptySet) {
                $this->_safeVar = $this->onEmptySetValue;
                $this->_isValid = true;
                goto finish;
            } else if ($this->emptyMessage) {
                $this->_isValid = false;
                $this->message = $this->emptyMessage;
                $this->_isEmpty = true;
            } else {
                $this->_isEmpty = true;
            }
        }

        if (!$this->_isValid && $this->isEmpty($this->message)) {
            if ($this->onErrorSet) {
                $this->_safeVar = $this->onErrorSetValue;
                $this->_isValid = true;
            } else if ($this->errorMessage !== '') {
                $this->message = $this->errorMessage;
            }
        } else {
            $this->_safeVar = $this->_unsafeVar;
        }

        finish:
        $this->validated = true;
    }