code: def test_properties(self):
      orth = "_orthogonalized_gauss"
      scal = "scale_tril"
      for d in self.distributions:
          # testing calling orthogonalized_gauss and scale_tril
          usn = UnifiedSkewNormal(
              d.trunc,
              d.gauss,
              d.cross_covariance_matrix,
              validate_args=False,
          )
          self.assertTrue(orth not in usn.__dict__)
          self.assertTrue(scal not in usn.__dict__)
          usn._orthogonalized_gauss
          self.assertTrue(orth in usn.__dict__)
          self.assertTrue(scal not in usn.__dict__)
          usn.scale_tril
          self.assertTrue(orth in usn.__dict__)
          self.assertTrue(scal in usn.__dict__)
  
          # testing calling orthogonalized_gauss and scale_tril in reverse order
          usn = UnifiedSkewNormal(
              d.trunc,
              d.gauss,
              d.cross_covariance_matrix,
              validate_args=False,
          )
          usn.scale_tril
          self.assertTrue(orth not in usn.__dict__)
          self.assertTrue(scal in usn.__dict__)
          usn._orthogonalized_gauss
          self.assertTrue(orth in usn.__dict__)
          self.assertTrue(scal in usn.__dict__)
  
imports: from __future__ import annotations
  from copy import deepcopy
  from itertools import count
  from typing import Any, Dict, Optional, Sequence, Tuple
  import torch
  from botorch.utils.probability.mvnxpb import MVNXPB
  from botorch.utils.probability.truncated_multivariate_normal import TruncatedMultivariateNormal
  from botorch.utils.probability.unified_skew_normal import UnifiedSkewNormal
  from botorch.utils.testing import BotorchTestCase
  from linear_operator.operators import DenseLinearOperator
  from torch import Tensor
  from torch.distributions import MultivariateNormal
  from torch.special import ndtri
label_desc: Use image node_id 8 for calling the TestUnifiedSkewNormal obj's underlying member method code with example usage: obj.test_properties() without return types