protected function _manipulateImage(ImageWithImagineInterface $image, ImagePathInterface $path)
    {
        foreach ($this->thumbnailRules as $thumbnailRule) {
            if ($thumbnailRule->thumbnailImage($image, $path)) {
                // successfully return at first match
                return;
            }
        }
        // default is to throw an error if no match.
        // End with an always matching rule to bypass.
        throw new ImageManipulatorException(sprintf('Cannot manipulate image: %s', $path->getPath()), ImageManipulatorException::CANNOT_MANIPULATE_IMAGE);
    }