class_docstr: A special data structure used in hypervolume computation.
  
  It consists of several doubly linked lists that share common nodes.
  Every node has multiple predecessors and successors, one in every list.
class_docstr_tok: ["A","special","data","structure","used","in","hypervolume","computation",".","It","consists","of","several","doubly","linked","lists","that","share","common","nodes",".","Every","node","has","multiple","predecessors","and","successors",",","one","in","every","list","."]
docstr: Removes and returns 'node' from all lists in [0, 'index'].
  
  Args:
      node: The node to remove
      index: The upper bound on the range of indices
      bounds: A `2 x m`-dim tensor bounds on the objectives
docstr_tok: ["Removes","and","returns","'node","'","from","all","lists","in","[","0",",","'index","'","]",".","Args",":","node",":","The","node","to","remove","index",":","The","upper","bound","on","the","range","of","indices","bounds",":","A","`","2","x","m","`","-dim","tensor","bounds","on","the","objectives"]
code: def remove(self, node: Node, index: int, bounds: Tensor) -> Node:
      r"""Removes and returns 'node' from all lists in [0, 'index'].
  
      Args:
          node: The node to remove
          index: The upper bound on the range of indices
          bounds: A `2 x m`-dim tensor bounds on the objectives
      """
      for i in range(index):
          predecessor = node.prev[i]
          successor = node.next[i]
          predecessor.next[i] = successor
          successor.prev[i] = predecessor
      bounds.data = torch.min(bounds, node.data)
      return node
  
imports: from __future__ import annotations
  import warnings
  from copy import deepcopy
  from itertools import combinations
  from typing import Callable, List, Optional, Union
  import torch
  from botorch.acquisition.cached_cholesky import CachedCholeskyMCSamplerMixin
  from botorch.acquisition.multi_objective.objective import MCMultiOutputObjective
  from botorch.acquisition.multi_objective.utils import prune_inferior_points_multi_objective
  from botorch.exceptions.errors import BotorchError, BotorchTensorDimensionError, UnsupportedError
  from botorch.exceptions.warnings import BotorchWarning
  from botorch.models.model import Model
  from botorch.sampling.base import MCSampler
  from botorch.utils.multi_objective.box_decompositions.box_decomposition_list import BoxDecompositionList
  from botorch.utils.multi_objective.box_decompositions.dominated import DominatedPartitioning
  from botorch.utils.multi_objective.box_decompositions.non_dominated import FastNondominatedPartitioning, NondominatedPartitioning
  from botorch.utils.multi_objective.box_decompositions.utils import _pad_batch_pareto_frontier
  from botorch.utils.objective import compute_feasibility_indicator
  from botorch.utils.torch import BufferDict
  from torch import Tensor
label_desc: Use image node_id 4 for calling the MultiList obj's underlying member method code with example usage: obj.remove(node, index, bounds) and returns: node