def METHOD_NAME(self, last_patch=None):
    patches = []
    source_node = get_clone_source(self.node)
    if source_node.tag not in EMBROIDERABLE_TAGS:
        return []
    old_transform = source_node.get('transform', '')
    source_transform = source_node.composed_transform()
    source_path = Path(source_node.get_path()).transform(source_transform)
    transform = Transform(source_node.get('transform', '')) @ -source_transform
    transform @= self.node.composed_transform() @ Transform(source_node.get('transform', ''))
    source_node.set('transform', transform)
    old_angle = float(source_node.get(INKSTITCH_ATTRIBS['angle'], 0))
    if self.clone_fill_angle is None:
        rot = transform.add_rotate(-old_angle)
        angle = self._get_rotation(rot, source_node, source_path)
        if angle is not None:
            source_node.set(INKSTITCH_ATTRIBS['angle'], angle)
    else:
        source_node.set(INKSTITCH_ATTRIBS['angle'], self.clone_fill_angle)
    elements = self.clone_to_element(source_node)
    for element in elements:
        stitch_groups = element.METHOD_NAME(last_patch)
        patches.extend(stitch_groups)
    source_node.set('transform', old_transform)
    source_node.set(INKSTITCH_ATTRIBS['angle'], old_angle)
    return patches