<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _parse_metadata(cls, line, meta, parse_remarks=True):
 """Parse a metadata line. The metadata is organized as a ``key: value`` statement which is split into the proper key and the proper value. Arguments: line (str):
 the line containing the metadata parse_remarks(bool, optional):
 set to `False` to avoid parsing the remarks. Note: If the line follows the following schema: ``remark: key: value``, the function will attempt to extract the proper key/value instead of leaving everything inside the remark key. This may cause issues when the line is identified as such even though the remark is simply a sentence containing a colon, such as ``remark: 090506 "Attribute"`` in Term (found in imagingMS.obo). To prevent the splitting from happening, the text on the left of the colon must be less that *20 chars long*. """

        key, value = line.split(':', 1)
        key, value = key.strip(), value.strip()
        if parse_remarks and "remark" in key:                        # Checking that the ':' is not
            if 0<value.find(': ')<20:                                # not too far avoid parsing a sentence
                try:                                                 # containing a ':' as a key: value
                    cls._parse_metadata(value, meta, parse_remarks)  # obo statement nested in a remark
                except ValueError:                                   # (20 is arbitrary, it may require
                    pass                                             # tweaking)
        else:
            meta[key].append(value)
            try:
                syn_type_def = []
                for m in meta['synonymtypedef']:
                    if not isinstance(m, SynonymType):
                        x = SynonymType.from_obo(m)
                        syn_type_def.append(x)
                    else:
                        syn_type_def.append(m)
            except KeyError:
                pass
            else:
                meta['synonymtypedef'] = syn_type_def