<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _SchemedMerge(self, scheme, a, b):
 """Tries to merge two entities according to a merge scheme. A scheme is specified by a map where the keys are entity attributes and the values are merge functions like Merger._MergeIdentical or Merger._MergeOptional. The entity is first migrated to the merged schedule. Then the attributes are individually merged as specified by the scheme. Args: scheme: The merge scheme, a map from entity attributes to merge functions. a: The entity from the old schedule. b: The entity from the new schedule. Returns: The migrated and merged entity. Raises: MergeError: One of the attributes was not able to be merged. """

    migrated = self._Migrate(b, self.feed_merger.b_schedule, False)
    for attr, merger in scheme.items():
      a_attr = getattr(a, attr, None)
      b_attr = getattr(b, attr, None)
      try:
        merged_attr = merger(a_attr, b_attr)
      except MergeError as merge_error:
        raise MergeError("Attribute '%s' could not be merged: %s." % (
            attr, merge_error))
      setattr(migrated, attr, merged_attr)
    return migrated