code: def populate(self):
      super(SubmoduleDataset, self).populate()
      # add submodules
      annex = BasicAnnexTestRepo()
      annex.create()
      kw = dict(expect_stderr=True)
      self.repo.call_git(
          ["submodule", "add", annex.url, "subm 1"], **kw
      )
      self.repo.call_git(["submodule", "add", annex.url, "2"], **kw)
      self.repo.commit("Added subm 1 and 2.")
      self.repo.call_git(
          ["submodule", "update", "--init", "--recursive"], **kw
      )
      # init annex in subdatasets
      for s in ("subm 1", "2"):
          AnnexRepo(opj(self.path, s), init=True)
  
imports: import os
  import tempfile
  from abc import ABCMeta, abstractmethod
  from os.path import exists
  from os.path import join
  from datalad import cfg
  from datalad.customremotes.base import init_datalad_remote
  from ..None import __version__
  from ..support.annexrepo import AnnexRepo
  from ..support.external_versions import external_versions
  from ..support.gitrepo import GitRepo
  from ..support.network import get_local_file_url
  from ..utils import swallow_logs, swallow_outputs
  from .None import _TEMP_PATHS_GENERATED
  from .utils_pytest import get_tempfile_kwargs
label_desc: Use image node_id 1 for calling the SubmoduleDataset obj's underlying member method code with example usage: obj.populate() without return types