protected function findByType($pattern, $part)
    {
        if (! is_array($pattern)) {
            $pattern = [$pattern];
        }
        $needle = 0;
        foreach ($pattern as $term) {
            $needle |= $term;
        }
        $matches = [];
        foreach ($this->catalogue as $spec => $features) {
            if ($needle === ($features & $needle)) {
                $props = explode(':', $spec);
                $matches[] = $props[$part];
            }
        }
        return array_unique($matches);
    }