code: def test_empty_parameterized_module():
      class MutableConv(ParametrizedModule):
          def __init__(self):
              super().__init__()
              self.conv1 = nn.Conv2d(3, 3, kernel_size=1)
              self.conv2 = nn.Conv2d(3, 5, kernel_size=1)
  
          def forward(self, x: torch.Tensor, index: int):
              if index == 0:
                  return self.conv1(x)
              else:
                  return self.conv2(x)
  
      class MyModelSpace(ModelSpace):
          def __init__(self):
              super().__init__()
              self.conv = MutableConv()
              self.index = ensure_frozen(
                  self.add_mutable(nni.choice("x", [0, 1]))
              )
  
          def freeze(self, sample):
              with model_context(sample):
                  return self.__class__()
  
          def forward(self, x: torch.Tensor):
              return self.conv(x, self.index)
  
      space = MyModelSpace()
      model = space.freeze({"x": 0})
      assert model(torch.randn(1, 3, 5, 5)).shape == (1, 3, 5, 5)
      model = space.freeze({"x": 1})
      assert model(torch.randn(1, 3, 5, 5)).shape == (1, 5, 5, 5)
  
imports: import copy
  import pytest
  import torch
  import nni
  from torch import nn
  from nni.common.serializer import is_traceable
  from nni.mutable import Categorical, ExpressionConstraint, ensure_frozen, frozen_context, label_scope, auto_label, SampleMissingError
  from nni.mutable.mutable import _mutable_equal
  from nni.nas.nn.pytorch import ModelSpace, MutableModule, ParametrizedModule
  from nni.nas.space import model_context
label_desc: Use image node_id 23 for calling a global function with example usage: test_empty_parameterized_module() and returns: self, self, self, self