code: def expand(
      self,
      batch_shape: Sequence[int],
      _instance: TruncatedMultivariateNormal = None,
  ) -> TruncatedMultivariateNormal:
      new = self._get_checked_instance(
          TruncatedMultivariateNormal, _instance
      )
      super().expand(batch_shape=batch_shape, _instance=new)
  
      new.bounds = self.bounds.expand(
          *new.batch_shape, *self.event_shape, 2
      )
      new._sampler = None  # does not implement `expand`
      new._solver = (
          None
          if self._solver is None
          else self._solver.expand(*batch_shape)
      )
      return new
  
file_path: botorch/botorch/utils/probability/truncated_multivariate_normal.py
imports: from __future__ import annotations
  from typing import Optional, Sequence
  import torch
  from botorch.utils.probability.lin_ess import LinearEllipticalSliceSampler
  from botorch.utils.probability.mvnxpb import MVNXPB
  from botorch.utils.probability.utils import get_constants_like
  from torch import Tensor
  from torch.distributions.multivariate_normal import MultivariateNormal
label_desc: Use image node_id 7 for calling the TruncatedMultivariateNormal obj's underlying member method code with example usage: obj.expand(batch_shape, _instance) and returns: new