code: def check_type_forward(self, in_types):
      type_check._argname(in_types, ("a", "b"))
      a_type, b_type = in_types
  
      type_check.expect(
          a_type.dtype.kind == "f",
          b_type.dtype.kind == "f",
          a_type.ndim >= 1,
          b_type.ndim >= 1,
      )
  
      a_ndim = type_check.eval(a_type.ndim)
      b_ndim = type_check.eval(b_type.ndim)
      if b_ndim == 1:
          a_idx = -2 if self.transa and a_ndim > 1 else -1
          type_check.expect(a_type.shape[a_idx] == b_type.shape[0])
      elif a_ndim == 1:
          b_idx = -1 if self.transb and b_ndim > 1 else -2
          type_check.expect(a_type.shape[0] == b_type.shape[b_idx])
      else:
          a_idx = _get_check_index(
              self.transa, False, row_idx=-2, col_idx=-1
          )
          b_idx = _get_check_index(
              self.transb, True, row_idx=-2, col_idx=-1
          )
          type_check.expect(a_type.shape[a_idx] == b_type.shape[b_idx])
          type_check.expect_broadcast_shapes(
              a_type.shape[:-2], b_type.shape[:-2]
          )
  
imports: import warnings
  import numpy
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  import chainer.functions
  from chainer import utils
  from chainer.utils import type_check
  import chainerx
label_desc: Use image node_id 2 for calling the MatMul obj's underlying member method code with example usage: obj.check_type_forward(in_types) without return types