code: def test_independent_multi_output_shk_shi(
      register_posterior_test: RegisterPosterior,
      q_sqrt_factory: QSqrtFactory,
      full_cov: bool,
      full_output_cov: bool,
      whiten: bool,
      num_latent_gps: int,
      output_dims: int,
  ) -> None:
      """
      Independent multi-output posterior with a shared kernel and shared inducing points.
      """
      kernel = gpflow.kernels.SharedIndependent(
          gpflow.kernels.SquaredExponential(), output_dim=output_dims
      )
      inducing_variable = (
          gpflow.inducing_variables.SharedIndependentInducingVariables(
              inducingpoint_wrapper(
                  np.random.randn(NUM_INDUCING_POINTS, INPUT_DIMS)
              )
          )
      )
  
      q_mu = np.random.randn(NUM_INDUCING_POINTS, num_latent_gps)
      q_sqrt = q_sqrt_factory(NUM_INDUCING_POINTS, num_latent_gps)
  
      conditional = create_conditional(
          kernel=kernel,
          inducing_variable=inducing_variable,
          q_mu=q_mu,
          q_sqrt=q_sqrt,
          whiten=whiten,
      )
      posterior = create_posterior(
          kernel=kernel,
          inducing_variable=inducing_variable,
          q_mu=q_mu,
          q_sqrt=q_sqrt,
          whiten=whiten,
      )
      register_posterior_test(
          posterior, IndependentPosteriorMultiOutput
      )
  
      _assert_fused_predict_f_equals_precomputed_predict_f_and_conditional(
          posterior, conditional, full_cov, full_output_cov
      )
  
imports: from typing import Any, Callable, DefaultDict, Optional, Set, Type, cast
  import numpy
  import pytest
  import tensorflow
  from _pytest.fixtures import SubRequest
  from check_shapes import check_shapes
  import gpflow
  import gpflow.ci_utils
  from gpflow.base import TensorType
  from gpflow.conditionals import conditional
  from gpflow.inducing_variables import InducingPoints, InducingVariables
  from gpflow.kernels import Kernel
  from gpflow.likelihoods import Gaussian
  from gpflow.mean_functions import Zero
  from gpflow.models.util import inducingpoint_wrapper
  from gpflow.posteriors import AbstractPosterior, FallbackIndependentLatentPosterior, FullyCorrelatedPosterior, GPRPosterior, IndependentPosteriorMultiOutput, IndependentPosteriorSingleOutput, LinearCoregionalizationPosterior, PrecomputeCacheType, SGPRPosterior, VGPPosterior, create_posterior
label_desc: Use image node_id 10 for calling a global function with example usage: test_independent_multi_output_shk_shi(register_posterior_test, q_sqrt_factory, full_cov, full_output_cov, whiten, num_latent_gps, output_dims) without return types