code: def generate_test_data(
      rs: np.random.RandomState,
      num_inducing=4,
      num_points_in=8,
      num_points_out=10,
      num_dims=5,
      expand_bound=True,
  ):
      X_out = rs.rand(num_points_out, num_dims)
      Y_out = rs.rand(num_points_out, 1)
      # X \in [-0.6, 1.4] and the bound is [0, 1]
      X_out = (X_out - 0.3) * 2
  
      X_in = rs.rand(num_points_in, num_dims)
      Y_in = rs.rand(num_points_in, 1)
  
      X_inducing = rs.rand(num_inducing, num_dims)
  
      X = np.vstack([X_in, X_out])
      Y = np.vstack([Y_in, Y_out])
  
      Y = np.squeeze(Y)
  
      data_indices = np.arange((num_points_in + num_points_out))
  
      rs.shuffle(data_indices)
  
      X = X[data_indices]
      Y = Y[data_indices]
  
      ss_in = check_subspace_points(
          X,
          cont_dims=np.arange(num_dims),
          bounds_cont=np.tile([0.0, 1.0], [num_dims, 1]),
          expand_bound=expand_bound,
      )
  
      X_in = X[ss_in]
      Y_in = Y[ss_in]
      X_out = X[~ss_in]
      Y_out = Y[~ss_in]
  
      return X_in, Y_in, X_out, Y_out, X_inducing
  
imports: import copy
  import unittest.mock
  import gpytorch
  import numpy
  import torch
  from gpytorch.constraints.constraints import Interval
  from gpytorch.distributions import MultivariateNormal
  from gpytorch.kernels import MaternKernel, ScaleKernel
  from gpytorch.kernels.inducing_point_kernel import InducingPointKernel
  from gpytorch.lazy import LazyEvaluatedKernelTensor, delazify
  from gpytorch.likelihoods import GaussianLikelihood
  from gpytorch.means.zero_mean import ZeroMean
  from gpytorch.models.exact_gp import ExactGP
  from smac.model.gaussian_process.kernels._boing import FITCKernel, FITCMean
  from smac.model.utils import check_subspace_points
label_desc: Use image node_id 1 for calling a global function with example usage: generate_test_data(rs, num_inducing, num_points_in, num_points_out, num_dims, expand_bound) and returns: X_in,  Y_in,  X_out,  Y_out,  X_inducing