class_docstr: An abstract class for box decompositions.
  
  Note: Internally, we store the negative reference point (minimization).
  
  :meta private:
code: def _validate_inputs(self) -> None:
      self.batch_shape = self.Y.shape[:-2]
      self.num_outcomes = self.Y.shape[-1]
      if len(self.batch_shape) > 1:
          raise NotImplementedError(
              f"{type(self).__name__} only supports a single "
              f"batch dimension, but got {len(self.batch_shape)} "
              "batch dimensions."
          )
      elif len(self.batch_shape) > 0 and self.num_outcomes > 2:
          raise NotImplementedError(
              f"{type(self).__name__} only supports a batched box "
              f"decompositions in the 2-objective setting."
          )
  
imports: from __future__ import annotations
  from abc import ABC, abstractmethod
  from typing import Optional
  import torch
  from botorch.exceptions.errors import BotorchError
  from botorch.utils.multi_objective.box_decompositions.utils import _expand_ref_point, _pad_batch_pareto_frontier, update_local_upper_bounds_incremental
  from botorch.utils.multi_objective.pareto import is_non_dominated
  from torch import Tensor
  from torch.nn import Module
label_desc: Use image node_id 13 for calling the BoxDecomposition obj's underlying member method code with example usage: obj._validate_inputs() without return types