code: def forward(self, X: Tensor) -> Tensor:
      posterior = self.model.posterior(X)
      samples = self.get_posterior_samples(posterior)
      hv_gain = self._compute_qehvi(samples=samples, X=X)
      cost_weighted_qehvi = self.cost_aware_utility(X=X, deltas=hv_gain)
      return cost_weighted_qehvi
  
file_path: botorch/botorch/acquisition/multi_objective/multi_fidelity.py
imports: from __future__ import annotations
  from typing import Any, Callable, List, Optional, Union
  import torch
  from botorch.acquisition.cost_aware import InverseCostWeightedUtility
  from botorch.acquisition.multi_objective.monte_carlo import qExpectedHypervolumeImprovement
  from botorch.acquisition.multi_objective.objective import MCMultiOutputObjective
  from botorch.models.cost import AffineFidelityCostModel
  from botorch.models.deterministic import GenericDeterministicModel
  from botorch.models.model import Model
  from botorch.sampling.base import MCSampler
  from botorch.utils.multi_objective.box_decompositions.non_dominated import NondominatedPartitioning
  from botorch.utils.transforms import concatenate_pending_points, t_batch_mode_transform
  from torch import Tensor
label_desc: Use image node_id 2 for calling the MOMF obj's underlying member method code with example usage: obj.forward(X) and returns: cost_weighted_qehvi