code: def _new_import(self, import_name):
          
  
          # Import can't be used if meta-model is loaded from string
          assert self.root_path is not None, \
              '"import" statement can not be used if meta-model is ' \
              'loaded from string.'
  
          # Find the absolute file name of the import based on the relative
          # import_name and current namespace
          current_namespace = self._namespace_stack[-1]
          if '.' in current_namespace:
              root_namespace = current_namespace.rsplit('.', 1)[0]
              import_name = "%s.%s" % (root_namespace, import_name)
  
          import_file_name = "%s.tx" % os.path.join(self.root_path,
                                                    *import_name.split("."))
  
          if import_name not in self.namespaces:
              self._enter_namespace(import_name)
              if self.debug:
                  self.dprint("*** IMPORTING FILE: %s" % import_file_name)
              metamodel_from_file(import_file_name, metamodel=self)
              self._leave_namespace()
  
          # Add the import to the imported_namespaces for current namespace
          # so that resolving of current grammar searches imported grammars
          # in the order of import
          self._imported_namespaces[current_namespace].append(
              self.namespaces[import_name])
docs: Starts a new import.
          Args:
              import_name(str): A relative import in the dot syntax
                  (e.g. "first.second.expressions")