code: def read_json(self):
          
          with reading_ancillary_files(self):
              metadata = super(ImpactLayerMetadata, self).read_json()
              if 'provenance' in metadata:
                  for provenance_step in metadata['provenance']:
                      try:
                          title = provenance_step['title']
                          if 'IF Provenance' in title:
                              self.append_if_provenance_step(
                                  provenance_step['title'],
                                  provenance_step['description'],
                                  provenance_step['time'],
                                  provenance_step['data']
                              )
                          else:
                              self.append_provenance_step(
                                  provenance_step['title'],
                                  provenance_step['description'],
                                  provenance_step['time'],
                              )
                      except KeyError:
                          # we want to get as much as we can without raising
                          # errors
                          pass
              if 'summary_data' in metadata:
                  self.summary_data = metadata['summary_data']
  
          return metadata
docs: read metadata from json and set all the found properties.
  
          :return: the read metadata
          :rtype: dict