public function getValidators() {
		if ($this->_validators === false) {
			return;
		}
		
		if ($this->_validators === null) {
			$definition = $this->getValidationDefinition();
			
			if ($definition === null) {
				$this->_validators = false;
				return;
			}
			
			$validators = [];
			
			foreach ($definition as $propName => $propValidators) {
				$propValidators = (array) $propValidators;
				
				if (! isset($validators[$propName])) {
					$validators[$propName] = [];
				}
				
				foreach ($propValidators as $name => $validatorDefinition) {
					if ($validatorDefinition instanceof ValidatorInterface) {
						$validators[$propName][$name] = $validatorDefinition;
					}
					else if (is_string($validatorDefinition)) {
						$validator = $this->getValidatorsLocator()->get($validatorDefinition);
						
						if (! $validator instanceof ValidatorInterface) {
							throw new Exception('Validator must implements "ValidatorInterface" interface');
						}
						
						$validators[$propName][$name] = $validator;
					}
					else if (is_array($validatorDefinition)) {
						if (! isset($validatorDefinition[0]) || ! is_string($validatorDefinition[0])) {
							throw new Exception('Invalid validator definition for the "' . $propName . '" property');
						}
						
						$validatorName = $validatorDefinition[0];
						unset($validatorDefinition[0]);
						
						$validator = $this->getValidatorsLocator()->getByArguments($validatorName, [$validatorDefinition]);
						
						if (! $validator instanceof ValidatorInterface) {
							throw new Exception('Validator must implements "ValidatorInterface" interface');
						}
						
						$validators[$propName][$name] = $validator;
					}
					else {
						throw new Exception('Invalid validator definition for the "' . $propName . '" property');
					}
				}
			}
			
			$this->_validators = $validators;
		}
		
		return $this->_validators;
	}