How to find all instances of a defined part?

I want to define a new kind of part and then using Automator efficiently find all instances of that part. Currently, I am trying to do that as follows:

Library definition:

library package SPECTRA {
    private import Metaobjects::SemanticMetadata;
    abstract occurrence def ReusablePart :> Parts::Part;
    abstract occurrence reusableParts : ReusablePart[*] nonunique;
    metadata def reusablePart :> SemanticMetadata {
        :>> baseType = reusableParts meta SysML::Usage;
    }
}

package MySystem {
    private import SPECTRA::reusablePart;
    #reusablePart server1;
    #reusablePart server2;
}

Automator code:

def is_reusable_part(node: syside.Element) -> bool:
    for metadata in node.metadata.collect():
        if str(metadata.metadata_definition.qualified_name) == "SPECTRA::reusablePart":
            return True
    return False

for node in model.nodes(node_kind=syside.Element, include_subtypes=True):
    if is_reusable_part(node):
        print(pprint_sysml(node))

Does anybody know a more straightforward/efficient way of doing this?

Iterate through syside.MetadataUsage instead, and then get annotated_element

You should also be able to do element.matches_qualified_name([...]), but you probably want metadata.conforms([...]) rather than checking qualified name

Also probably more idiomatic to lookup the element SPECTRA::reusablePart as an element first, and compare against that, instead of comparing qualified name

Refined variant:

for metadata in model.nodes(node_kind=syside.MetadataUsage):
    if metadata.conforms(["SPECTRA", "reusablePart"]):
        for element in metadata.annotated_elements:
            print(pprint_sysml(element))

That will be nearly the most efficient way to search for metadata, only faster if you can find the actual metadata element and check conformance to it rather than qualified name