<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def append_transformation(self, transformation, extend_collection=False, clear_redo=True):
 """ Appends a transformation to all TransformedStructures. Args: transformation: Transformation to append extend_collection: Whether to use more than one output structure from one-to-many transformations. extend_collection can be a number, which determines the maximum branching for each transformation. clear_redo (bool):
 Whether to clear the redo list. By default, this is True, meaning any appends clears the history of undoing. However, when using append_transformation to do a redo, the redo list should not be cleared to allow multiple redos. Returns: List of booleans corresponding to initial transformed structures each boolean describes whether the transformation altered the structure """

        if self.ncores and transformation.use_multiprocessing:
            p = Pool(self.ncores)
            # need to condense arguments into single tuple to use map
            z = map(
                lambda x: (x, transformation, extend_collection, clear_redo),
                self.transformed_structures)
            new_tstructs = p.map(_apply_transformation, z, 1)
            self.transformed_structures = []
            for ts in new_tstructs:
                self.transformed_structures.extend(ts)
        else:
            new_structures = []
            for x in self.transformed_structures:
                new = x.append_transformation(transformation,
                                              extend_collection,
                                              clear_redo=clear_redo)
                if new is not None:
                    new_structures.extend(new)
            self.transformed_structures.extend(new_structures)