private function callMethod($methodName, $datas)
    {
        if (method_exists($this, $methodName)) {
            $call = [$this, $methodName];
        } elseif (isset($this->extends[$methodName])) {
            $call = $this->extends[$methodName];
        } else {
            throw new MethodNotExistsException(sprintf('%s method is not exists in Validation class', $methodName));
        }

        if ($methodName !== 'runRequired') {
            $return = call_user_func_array([$this, 'runRequired'], count($datas) === 4 ? array_slice($datas, 1, 4) : $datas);
        }

        call_user_func_array($call, $datas);

        return $return;
    }