docs: def _series_imagej(self):
          """Return image series in ImageJ file."""
          # ImageJ's dimension order is always TZCYXS
          # TODO: fix loading of color, composite, or palette images
          pages = self.pages
          pages.useframes = True
          pages.keyframe = 0
          page = pages[0]
          ij = self.imagej_metadata
  
          def is_hyperstack():
              # ImageJ hyperstack store all image metadata in the first page and
              # image data are stored contiguously before the second page, if any
              if not page.is_final:
                  return False
              images = ij.get('images', 0)
              if images <= 1:
                  return False
              offset, count = page.is_contiguous
              if (count != product(page.shape) * page.bitspersample // 8
                      or offset + count*images > self.filehandle.size):
                  raise ValueError()
              # check that next page is stored after data
              if len(pages) > 1 and offset + count*images > pages[1].offset:
                  return False
              return True
  
          try:
              hyperstack = is_hyperstack()
          except ValueError:
              log.warning('ImageJ series: invalid metadata or corrupted file')
              return None
          if hyperstack:
              # no need to read other pages
              pages = [page]
          else:
              pages = pages[:]
  
          shape = []
          axes = []
          if 'frames' in ij:
              shape.append(ij['frames'])
              axes.append('T')
          if 'slices' in ij:
              shape.append(ij['slices'])
              axes.append('Z')
          if 'channels' in ij and not (page.photometric == 2 and not
                                       ij.get('hyperstack', False)):
              shape.append(ij['channels'])
              axes.append('C')
          remain = ij.get('images', len(pages))//(product(shape) if shape else 1)
          if remain > 1:
              shape.append(remain)
              axes.append('I')
          if page.axes[0] == 'I':
              # contiguous multiple images
              shape.extend(page.shape[1:])
              axes.extend(page.axes[1:])
          elif page.axes[:2] == 'SI':
              # color-mapped contiguous multiple images
              shape = page.shape[0:1] + tuple(shape) + page.shape[2:]
              axes = list(page.axes[0]) + axes + list(page.axes[2:])
          else:
              shape.extend(page.shape)
              axes.extend(page.axes)
  
          truncated = (
              hyperstack and len(self.pages) == 1 and
              page.is_contiguous[1] != product(shape) * page.bitspersample // 8)
  
          self.is_uniform = True
  
          return [TiffPageSeries(pages, shape, page.dtype, axes, kind='ImageJ',
                                 truncated=truncated)]