docs: def create_from_binary(cls, mft_config, binary_data, entry_number):
          #TODO test carefully how to find the correct index entry, specially with NTFS versions < 3
          '''Creates a MFTEntry from a binary stream. It correctly process
          the binary data extracting the MFTHeader, all the attributes and the
          slack information from the binary stream.
  
          The binary data WILL be changed to apply the fixup array.
  
          Args:
              mft_config (:obj:`MFTConfig`) - An instance of MFTConfig, as this tells
                  how the library will interpret data.
              binary_data (bytearray) - A binary stream with the data to extract.
                  This has to be a writeable and support the memoryview call
              entry_number (int) - The entry number for this entry
  
          Returns:
              MFTEntry: If the object is empty, returns None, otherwise, new object MFTEntry
          '''
          bin_view = memoryview(binary_data)
          entry = None
  
          #test if the entry is empty
          if bin_view[0:4] != b"\x00\x00\x00\x00":
              try:
                  header = MFTHeader.create_from_binary(mft_config.ignore_signature_check,
                              bin_view[:MFTHeader.get_representation_size()])
              except HeaderError as e:
                  e.update_entry_number(entry_number)
                  e.update_entry_binary(binary_data)
                  raise
              entry = cls(header, _defaultdict(list))
  
              if header.mft_record != entry_number:
                  _MOD_LOGGER.warning("The MFT entry number doesn't match. %d != %d", entry_number, header.mft_record)
              if len(binary_data) != header.entry_alloc_len:
                  _MOD_LOGGER.error("Expected MFT size is different than entry size.")
                  raise EntryError(f"Expected MFT size ({len(binary_data)}) is different than entry size ({header.entry_alloc_len}).", binary_data, entry_number)
              if mft_config.apply_fixup_array:
                  apply_fixup_array(bin_view, header.fx_offset, header.fx_count, header.entry_alloc_len)
  
              entry._load_attributes(mft_config, bin_view[header.first_attr_offset:])
  
          bin_view.release() #release the underlying buffer
  
          return entry