def METHOD_NAME(self, properties: NodeProperties) -> str:
    if not properties.label:
        return ""
    label: str = properties.label
    if properties.attrs is None and properties.methods is None:
        # return a "compact" form which only displays the class name in a box
        return label
    # Add class attributes
    attrs: list[str] = properties.attrs or []
    attrs_string = rf"{HTMLLabels.LINEBREAK_LEFT.value}".join(
        attr.replace("|", r"\|") for attr in attrs
    )
    label = rf"{{{label}|{attrs_string}{HTMLLabels.LINEBREAK_LEFT.value}|"
    # Add class methods
    methods: list[nodes.FunctionDef] = properties.methods or []
    for func in methods:
        args = ", ".join(self._get_method_arguments(func)).replace("|", r"\|")
        method_name = (
            f"<I>{func.name}</I>" if func.is_abstract() else f"{func.name}"
        )
        label += rf"{method_name}({args})"
        if func.returns:
            annotation_label = get_annotation_label(func.returns)
            label += ": " + self._escape_annotation_label(annotation_label)
        label += rf"{HTMLLabels.LINEBREAK_LEFT.value}"
    label += "}"
    return label