<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def appendComponent(self, baseGlyph=None, offset=None, scale=None, component=None):
 """ Append a component to this glyph. This will return a :class:`BaseComponent` object representing the new component in the glyph. ``offset`` indicates the x and y shift values that should be applied to the appended component. It must be a :ref:`type-coordinate` value or ``None``. If ``None`` is given, the offset will be ``(0, 0)``. ``scale`` indicates the x and y scale values that should be applied to the appended component. It must be a :ref:`type-scale` value or ``None``. If ``None`` is given, the scale will be ``(1.0, 1.0)``. ``component`` may be a :class:`BaseComponent` object from which attribute values will be copied. If ``baseGlyph``, ``offset`` or ``scale`` are specified as arguments, those values will be used instead of the values in the given component object. """

        identifier = None
        sxy = 0
        syx = 0
        if component is not None:
            component = normalizers.normalizeComponent(component)
            if baseGlyph is None:
                baseGlyph = component.baseGlyph
            sx, sxy, syx, sy, ox, oy = component.transformation
            if offset is None:
                offset = (ox, oy)
            if scale is None:
                scale = (sx, sy)
            if baseGlyph is None:
                baseGlyph = component.baseGlyph
            if component.identifier is not None:
                existing = set([c.identifier for c in self.components if c.identifier is not None])
                if component.identifier not in existing:
                    identifier = component.identifier
        baseGlyph = normalizers.normalizeGlyphName(baseGlyph)
        if self.name == baseGlyph:
            raise FontPartsError(("A glyph cannot contain a component referencing itself."))
        if offset is None:
            offset = (0, 0)
        if scale is None:
            scale = (1, 1)
        offset = normalizers.normalizeTransformationOffset(offset)
        scale = normalizers.normalizeTransformationScale(scale)
        ox, oy = offset
        sx, sy = scale
        transformation = (sx, sxy, syx, sy, ox, oy)
        identifier = normalizers.normalizeIdentifier(identifier)
        return self._appendComponent(baseGlyph, transformation=transformation, identifier=identifier)