code: def _open(self) -> None:
      # Header
      assert self.fp is not None
  
      s = self.fp.read(32)
      if not _accept(s):
          msg = "not an MSP file"
          raise SyntaxError(msg)
  
      # Header checksum
      checksum = 0
      for i in range(0, 32, 2):
          checksum = checksum ^ i16(s, i)
      if checksum != 0:
          msg = "bad MSP checksum"
          raise SyntaxError(msg)
  
      self._mode = "1"
      self._size = i16(s, 4), i16(s, 6)
  
      if s[:4] == b"DanM":
          self.tile = [("raw", (0, 0) + self.size, 32, ("1", 0, 1))]
      else:
          self.tile = [("MSP", (0, 0) + self.size, 32, None)]
  
file_path: pillow/src/PIL/MspImagePlugin.py
imports: from __future__ import annotations
  import io
  import struct
  from .None import Image, ImageFile
  from ._binary import i16le
  from ._binary import o16le
label_desc: Use image node_id 1 for calling the MspImageFile obj's underlying member method code with example usage: obj._open() without return types