docs: def merge(self, parent=None):
          """ Merge parent data """
          # Check parent, append source files
          if parent is None:
              parent = self.parent
          if parent is None:
              return
          self.sources = parent.sources + self.sources
          # Merge child data with parent data
          data = copy.deepcopy(parent.data)
          for key, value in sorted(self.data.items()):
              # Handle attribute adding
              if key.endswith('+'):
                  key = key.rstrip('+')
                  if key in data:
                      # Use dict.update() for merging dictionaries
                      if type(data[key]) == type(value) == dict:
                          data[key].update(value)
                          continue
                      try:
                          value = data[key] + value
                      except TypeError as error:
                          raise utils.MergeError(
                              "MergeError: Key '{0}' in {1} ({2}).".format(
                                  key, self.name, str(error)))
              # And finally update the value
              data[key] = value
          self.data = data