<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add(self, artifact_type: ArtifactType, src_path: str, dst_path: str=None):
 """Add an artifact of type `artifact_type` at `src_path`. `src_path` should be the path of the file relative to project root. `dst_path`, if given, is the desired path of the artifact in dependent targets, relative to its base path (by type). """

        if dst_path is None:
            dst_path = src_path
        other_src_path = self._artifacts[artifact_type].setdefault(
            dst_path, src_path)
        if src_path != other_src_path:
            raise RuntimeError(
                '{} artifact with dest path {} exists with different src '
                'path: {} != {}'.format(artifact_type, dst_path, src_path,
                                        other_src_path))