Inheritance: extends RuntimeException
 /**
  * @param \Iterator|\SplFileInfo[] $fileInfoIterator note: only \SplFileInfo allowed in this iterator
  *
  * @throws InvalidFileInfo In case of iterator not contains only SplFileInfo
  */
 public function __construct(\Iterator $fileInfoIterator)
 {
     foreach ($fileInfoIterator as $fileInfo) {
         if (!$fileInfo instanceof \SplFileInfo) {
             throw InvalidFileInfo::fromNonSplFileInfo($fileInfo);
         }
     }
     $this->fileSystemIterator = $fileInfoIterator;
 }
 /**
  * @dataProvider nonSplFileInfoProvider
  *
  * @param string $expectedMessage
  * @param mixed  $value
  *
  * @return void
  */
 public function testFromNonSplFileInfo($expectedMessage, $value)
 {
     $exception = InvalidFileInfo::fromNonSplFileInfo($value);
     self::assertInstanceOf(InvalidFileInfo::class, $exception);
     self::assertSame($expectedMessage, $exception->getMessage());
 }