<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _compute_artifact_set(self, management_target):
 """Computes the set of pinned artifacts specified by this target, and any of its dependencies. An error is raised if a conflict exists between a pinned version between a ManagedJarDependencies target and any of its dependencies, or if two versions of a jar exist in the same ManagedJarDependencies target. :param Target management_target: a target object which is (or at least depends on) a ManagedJarDependencies target. :return: the computed transitive artifact set (approximately the union of all pinned artifacts in the transitive closure of the input target). :rtype: PinnedJarArtifactSet """

    artifact_set = PinnedJarArtifactSet()

    # Keeps track of where pinned artifacts came from for logging purposes.
    specs_by_coordinate = {}

    def handle_managed_jar_dependencies(target):
      subset = PinnedJarArtifactSet()
      for jar in self._jar_iterator(target):
        if jar.rev is None:
          raise self.MissingVersion(target, jar)
        if jar in subset and subset[jar].rev != jar.rev:
          raise self.DuplicateCoordinateError(target, jar, artifact_set[jar].rev, jar.rev)
        subset.put(jar)
      return subset

    def handle_conflict(artifact, target):
      previous_coord = artifact_set[artifact]
      previous_spec = specs_by_coordinate[previous_coord]
      message = ('Artifact {previous_coord} (from {previous_target}) overridden by {new_coord} '
                 '(in {new_target}).'.format(previous_coord=previous_coord,
                                             previous_target=previous_spec,
                                             new_coord=artifact,
                                             new_target=target.address.spec))
      raise self.IllegalVersionOverride(message)

    def handle_target(target):
      if not isinstance(target, ManagedJarDependencies):
        return
      for artifact in handle_managed_jar_dependencies(target):
        if artifact.rev != artifact_set[artifact].rev:
          handle_conflict(artifact, target)
        specs_by_coordinate[M2Coordinate.create(artifact)] = target.address.spec
        artifact_set.put(artifact)

    self.context.build_graph.walk_transitive_dependency_graph(
      addresses=[management_target.address],
      work=handle_target,
      postorder=True, # Process dependencies first.
    )
    return artifact_set