public function read($param)
    {
        if ($param instanceof File)
            return $this->readFile($param->getFullPath());

        if (is_resource($param))
            return $this->readFileHandle($param);

        if (!is_string($param))
            throw new \InvalidArgumentException("Cannot read argument: " . WF::str($param));

        if (strlen($param) < 1024 && file_exists($param))
            return $this->readFile($param);

        return $this->readString($param);
    }