public function listPropertyTypes($systemName = null, CachePolicy $cachePolicy = null)
    {
        $parameters = [
            'query' => [],
            'body' => json_encode([], JSON_UNESCAPED_UNICODE),
            'headers' => [],
        ];

        $result = $this->get('v1/propertysets/propertytypes', $parameters, $cachePolicy);
        foreach ($result as &$entry) {
            $entry = new PropertyType($entry);
        }
        unset($entry);
        reset($result);

        if (null !== $systemName) {
            foreach ($result as $entry) {
                if ($entry->getSystemName() === $systemName) {
                    return $entry;
                }
            }

            return null;
        }

        return $result;
    }