<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def dump(self, dump_file_name=None):
 # pragma: no cover, never called # pylint: disable=unused-argument """ Dump Item object properties :return: dictionary with properties :rtype: dict """

        dump = {}
        for prop in self.properties:
            if not hasattr(self, prop):
                continue
            attr = getattr(self, prop)
            if isinstance(attr, list) and attr and isinstance(attr[0], Item):
                dump[prop] = [i.dump() for i in attr]
            elif isinstance(attr, Item):
                dump[prop] = attr.dump()
            elif attr:
                dump[prop] = getattr(self, prop)
        return dump