Utility method to insert converters at the beginning ofthis chain. If inplace is True, this object is modified
        and  None is returned. Otherwise, a copy is returned

        :param converters: the list of converters to insert
        :param inplace: boolean indicating whether to modify this object (True) or return a copy (False)
        :return: None or a copy with the converters added

def insert_conversion_steps_at_beginning(self, converters: List[Converter], inplace: bool = False):
        """
        Utility method to insert converters at the beginning ofthis chain. If inplace is True, this object is modified
        and  None is returned. Otherwise, a copy is returned

        :param converters: the list of converters to insert
        :param inplace: boolean indicating whether to modify this object (True) or return a copy (False)
        :return: None or a copy with the converters added
        """
        if inplace:
            for converter in reversed(converters):
                self.insert_conversion_step_at_beginning(converter, inplace=True)
            return
        else:
            new = copy(self)
            for converter in reversed(converters):
                # do inplace since it is a copy
                new.insert_conversion_step_at_beginning(converter, inplace=True)
            return new