protected function compile(array $input, $cache, array $options = [], array $modifyVars = [])
    {
        $parse = $this->prepareInputFilesForParsing($input);

        if ($cache) {
            $options += ['cache_dir' => $this->cssPath];
            return \Less_Cache::Get($parse, $options, $modifyVars);
        }

        $lessc = new \Less_Parser($options);

        foreach ($parse as $file => $path) {
            $lessc->parseFile($file, $path);
        }
        // ModifyVars must be called at the bottom of the parsing,
        // this way we're ensuring they override their default values.
        // http://lesscss.org/usage/#command-line-usage-modify-variable
        $lessc->ModifyVars($modifyVars);

        return $lessc->getCss();
    }