public function setFilePermissions($permissions)
    {
        if (! is_int($permissions)) {
            throw new InvalidArgumentException(sprintf(
                'Invalid file permissins provided; must be an '
                . 'integer, "%s" received.',
                is_object($permissions) ? get_class($permissions)
                                        : gettype($permissions)
            ));
        }
        if (! (0b100000000 & $permissions)) {
            throw new InvalidArgumentException(sprintf(
                'Invalid file permissions "%s" provided. '
                . 'Files will not available for reading.',
                decoct($permissions)
            ));
        }
        if (! (0b010000000 & $permissions)) {
            throw new InvalidArgumentException(sprintf(
                'Invalid file permissions "%s" provided. '
                . 'Files will not available for writing.',
                decoct($permissions)
            ));
        }
        if (0b001000000 & $permissions) {
            throw new InvalidArgumentException(sprintf(
                'Invalid file permissions "%s" provided. '
                . 'Files will be executable.',
                decoct($permissions)
            ));
        }
        $this->filePermissions = $permissions;
    }