public function validate() {        
        if($this instanceof Cache\CacheableValidatableInterface && $this->isValidationCacheEnabled() && $this->lastValidationResult instanceof ValidationResultSet) {
            return $this->lastValidationResult;
        }
        
        $validationResultSet = $this->validateValue($this->getValue());
        
        if($this instanceof Cache\CacheableValidatableInterface && $this->isValidationCacheEnabled()) {
            $this->lastValidationResult = $validationResultSet;
        }
            
        return $validationResultSet;
    }