code: def test_abstract_base_outcome_transform(self):
      with self.assertRaises(TypeError):
          OutcomeTransform()
      oct = NotSoAbstractOutcomeTransform()
      with self.assertRaises(NotImplementedError):
          oct.subset_output(None)
      with self.assertRaises(NotImplementedError):
          oct.untransform(None, None)
      with self.assertRaises(NotImplementedError):
          oct.untransform_posterior(None)
  
imports: import itertools
  from copy import deepcopy
  import torch
  from botorch.models.transforms.outcome import Bilog, ChainedOutcomeTransform, Log, OutcomeTransform, Power, Standardize
  from botorch.models.transforms.utils import norm_to_lognorm_mean, norm_to_lognorm_variance
  from botorch.posteriors import GPyTorchPosterior, TransformedPosterior
  from botorch.utils.testing import BotorchTestCase
  from gpytorch.distributions import MultitaskMultivariateNormal, MultivariateNormal
  from linear_operator.operators import BlockDiagLinearOperator, DenseLinearOperator, DiagLinearOperator
label_desc: Use image node_id 1 for calling the TestOutcomeTransforms obj's underlying member method code with example usage: obj.test_abstract_base_outcome_transform() without return types