anchor.diff:                  <<"providerId">> => ProviderId,
                   <<"ownerId">> => OwnerId,
                   <<"hasDirectQos">> => HasDirectQos,
  -                <<"hasEffQos">> => HasEffQos
  +                <<"hasEffQos">> => HasEffQos,
  +                <<"effDatasetMembership">> => EffDatasetMembership
               }
       end.
   
  
positive.code:     has_eff_qos = HasEffQos,
      active_permissions_type = ActivePermissionsType,
      index_startid = StartId,
      eff_protection_flags = EffFileProtectionFlags,
      file_attr = #file_attr{
          guid = FileGuid,
  
negative.code: translate_resource(#gri{aspect = qos_summary, scope = private}, QosSummaryResponse) ->
      maps:without([<<"status">>], QosSummaryResponse);
  
  translate_resource(#gri{aspect = dataset_summary, scope = private}, DatasetSummary) ->
      translate_dataset_summary(DatasetSummary).
  
  
  -spec translate_dataset_summary(lfm_datasets:file_eff_summary()) -> map().
  translate_dataset_summary(#file_eff_dataset_summary{
      direct_dataset = DatasetId,
      eff_ancestor_datasets = EffAncestorDatasets,
      eff_protection_flags = EffProtectionFlags
  