public function getWorkspaces()
    {
        return $this->getCachedProperty(
            'workspaces',
            function () {
                $result = [];
                $items = $this->getValue('workspaces');
                if (is_array($items)) {
                    /** @var array $items */
                    foreach ($items as $item) {
                        try {
                            $result[] = new Workspace($item);
                        } catch (\InvalidArgumentException $e) {
                            throw new \UnexpectedValueException(
                                $e->getMessage(),
                                $e->getCode(),
                                $e
                            );
                        }
                    }
                }

                return $result;
            }
        );
    }