How 'bout passing either a string or a Mustache_Cache instance in as the 'cache' option? That would mitigate the possibility of someone passing in both a cache instance and a path, and any confusion over what would actually happen.

```php
if (isset($options['cache'])) {
    $cache = $options['cache'];

    if (is_string($cache)) {
        $mode  = isset($options['cache_file_mode']) ? $options['cache_file_mode'] : null;
        $cache = new Mustache_Cache_FilesystemCache($cache, $mode);
    }

    $this->setCache($cache);
}
```