def get_dynspace(self, args, kwargs=None):
node = get_node(self, *convert_args(args, kwargs))<EOL>key = node[KEY]<EOL>if key in self.param_spaces:<EOL><INDENT>return self.param_spaces[key]<EOL><DEDENT>else:<EOL><INDENT>last_self = self.system.self<EOL>self.system.self = self<EOL>try:<EOL><INDENT>space_args = self.eval_formula(node)<EOL><DEDENT>finally:<EOL><INDENT>self.system.self = last_self<EOL><DEDENT>if space_args is None:<EOL><INDENT>space_args = {"<STR_LIT>": [self]}  <EOL><DEDENT>else:<EOL><INDENT>if "<STR_LIT>" in space_args:<EOL><INDENT>bases = get_impls(space_args["<STR_LIT>"])<EOL>if isinstance(bases, StaticSpaceImpl):<EOL><INDENT>space_args["<STR_LIT>"] = [bases]<EOL><DEDENT>elif bases is None:<EOL><INDENT>space_args["<STR_LIT>"] = [self]  <EOL><DEDENT>else:<EOL><INDENT>space_args["<STR_LIT>"] = bases<EOL><DEDENT><DEDENT>else:<EOL><INDENT>space_args["<STR_LIT>"] = [self]<EOL><DEDENT><DEDENT>space_args["<STR_LIT>"] = node_get_args(node)<EOL>space = self._new_dynspace(**space_args)<EOL>self.param_spaces[key] = space<EOL>space.inherit(clear_value=False)<EOL>return space<EOL><DEDENT>
Create a dynamic root space

        Called from interface methods