protected function factoryFilesTree($fileName, $fileType, $fileTemporaryName, $fileError, $fileSize)
    {
        if (false === is_array($fileError)) {
            return new Doozr_Request_File(
                [
                    'name'     => $fileName,
                    'type'     => $fileType,
                    'tmp_name' => $fileTemporaryName,
                    'error'    => $fileError,
                    'size'     => $fileSize,
                ]
            );
        }

        $filesTree = [];

        foreach ($fileError as $nodeName => $errorData) {
            $filesTree[$nodeName] = $this->factoryFilesTree(
                $fileName[$nodeName],
                $fileType[$nodeName],
                $fileTemporaryName[$nodeName],
                $errorData,
                $fileSize[$nodeName]
            );
        }

        return $filesTree;
    }