code: def _merge_options(self, identifier, group_name, options):
          
          if group_name not in self.groups:
              raise KeyError("Group %s not defined on SettingTree" % group_name)
  
          if identifier in self.children:
              current_node = self[identifier]
              group_options = current_node.groups[group_name]
          else:
              #When creating a node (nothing to merge with) ensure it is empty
              group_options = Options(group_name,
                       allowed_keywords=self.groups[group_name].allowed_keywords)
  
          override_kwargs = dict(options.kwargs)
          old_allowed = group_options.allowed_keywords
          override_kwargs['allowed_keywords'] = options.allowed_keywords + old_allowed
  
          try:
              return (group_options(**override_kwargs)
                      if options.merge_keywords else Options(group_name, **override_kwargs))
          except OptionError as e:
              raise OptionError(e.invalid_keyword,
                                e.allowed_keywords,
                                group_name=group_name,
                                path = self.path)
docs: Computes a merged Options object for the given group
          name from the existing Options on the node and the
          new Options which are passed in.