code: def _interval(
      n: int, start: Optional[int], end: Optional[int]
  ) -> Optional[Tuple[int, int]]:
      if start == 0:
          if end is None or np.isnan(end):
              return None
          if end < 0:
              return (0, n + end)
          return (0, end)
      if end is None or np.isnan(end):
          return (start, n)  # type: ignore
      if end < 0:
          return (start, n + end)  # type: ignore
      return (start, end)
  
file_path: onnx/onnx/reference/ops/op_shape.py
imports: from typing import Optional, Tuple
  import numpy
  from onnx.reference.op_run import OpRun
label_desc: Use image node_id 1 for calling the Shape_15 obj's underlying member method code with example usage: obj._interval(n, start, end) and returns: start,  end, int,  end, start,  n, start,  unknown, None, int,  unknown