docs: def _download_contact(cls, mm_contact, file):
          """
          Specialized version of .download_media() for contacts.
          Will make use of the vCard 4.0 format.
          """
          first_name = mm_contact.first_name
          last_name = mm_contact.last_name
          phone_number = mm_contact.phone_number
  
          # Remove these pesky characters
          first_name = first_name.replace(';', '')
          last_name = (last_name or '').replace(';', '')
          result = (
              'BEGIN:VCARD\n'
              'VERSION:4.0\n'
              'N:{f};{l};;;\n'
              'FN:{f} {l}\n'
              'TEL;TYPE=cell;VALUE=uri:tel:+{p}\n'
              'END:VCARD\n'
          ).format(f=first_name, l=last_name, p=phone_number).encode('utf-8')
  
          if file is bytes:
              return result
          elif isinstance(file, str):
              file = cls._get_proper_filename(
                  file, 'contact', '.vcard',
                  possible_names=[first_name, phone_number, last_name]
              )
              f = open(file, 'wb', encoding='utf-8')
          else:
              f = file
  
          try:
              f.write(result)
          finally:
              # Only close the stream if we opened it
              if isinstance(file, str):
                  f.close()
  
          return file