public function prepend(string $contents, int $maxMemory = 8096): bool
    {
        $test = \sndsgd\Fs::EXISTS | \sndsgd\Fs::READABLE | \sndsgd\Fs::WRITABLE;
        if ($this->test($test) === false) {
            $this->error = "failed to prepend file; {$this->error}";
            return false;
        }

        $len = strlen($contents);
        $size = filesize($this->path);
        $endsize = $len + $size;

        # if the overall filesize is greater than `maxMemory`, write efficiently
        if ($endsize > $maxMemory) {
            return $this->prependFileInPlace($contents, $len, $endsize);
        }

        # use file_get/put_contents to handle the operation
        if (($tmp = $this->readFile(0)) === false) {
            return false;
        }

        if ($this->writeFile($contents.$tmp, 0) === false) {
            return false;
        }

        return true;
    }