code: def remove_first(self, inplace: bool = False):
          
          if len(self._converters_list) > 1:
              if inplace:
                  self._converters_list = self._converters_list[1:]
                  # update the current source type
                  self.from_type = self._converters_list[0].from_type
                  return
              else:
                  new = copy(self)
                  new._converters_list = new._converters_list[1:]
                  # update the current source type
                  new.from_type = new._converters_list[0].from_type
                  return new
          else:
              raise ValueError('cant remove first: would make it empty!')
docs: Utility method to remove the first converter of this chain. If inplace is True, this object is modified and
          None is returned. Otherwise, a copy is returned
  
          :param inplace: boolean indicating whether to modify this object (True) or return a copy (False)
          :return: None or a copy with the first converter removed