code: def RegisterDefinition(self, artifact_definition):
      
      artifact_definition_name = artifact_definition.name.lower()
      if artifact_definition_name in self._artifact_definitions:
        raise KeyError(
            'Artifact definition already set for name: {0:s}.'.format(
                artifact_definition.name))
  
      self._artifact_definitions[artifact_definition_name] = artifact_definition
      self._defined_artifact_names.add(artifact_definition.name)
  
      for source in artifact_definition.sources:
        if source.type_indicator == definitions.TYPE_INDICATOR_ARTIFACT_GROUP:
          self._artifact_name_references.update(source.names)
docs: Registers an artifact definition.
  
      Artifact definitions are identified based on their lower case name.
  
      Args:
        artifact_definition (ArtifactDefinition): an artifact definition.
  
      Raises:
        KeyError: if artifact definition is already set for the corresponding
            name.