code: def get_input_document(document):
      
      try:
          if document.SUBCLASS_OF_ID == 0xf33fdb68:  # crc32(b'InputDocument'):
              return document
      except AttributeError:
          _raise_cast_fail(document, 'InputDocument')
  
      if isinstance(document, types.Document):
          return types.InputDocument(
              id=document.id, access_hash=document.access_hash,
              file_reference=document.file_reference)
  
      if isinstance(document, types.DocumentEmpty):
          return types.InputDocumentEmpty()
  
      if isinstance(document, types.MessageMediaDocument):
          return get_input_document(document.document)
  
      if isinstance(document, types.Message):
          return get_input_document(document.media)
  
      _raise_cast_fail(document, 'InputDocument')
docs: Similar to :meth:`get_input_peer`, but for documents