def METHOD_NAME(self, normalized_path: str) -> Union[Buffer, None]:
    entry = self.entries.get(normalized_path, None)
    if entry is None:
        return None
    if isinstance(entry, MiniEntry):
        self.buffer.seek(entry.full_entry_offset)
        entry = Entry(entry.file_name, entry.full_entry_offset).read(self.buffer)
        self.entries[normalized_path] = entry
    if entry.archive_id == 0x7FFF:
        data = bytearray(entry.preload_data)
        with self.buffer.read_from_offset(entry.offset + self.header.tree_size + self.tree_offset):
            data.extend(self.buffer.read(entry.size))
        reader = MemoryBuffer(data)
        return reader
    else:
        target_archive_path = self.filepath.parent / f'{self.filepath.stem[:-3]}{entry.archive_id:03d}.vpk'
        with open(target_archive_path, 'rb') as target_archive:
            target_archive.seek(entry.offset)
            reader = MemoryBuffer(entry.preload_data + target_archive.read(entry.size))
            return reader