anchor.diff:          generate_correct_data_sets(DataSpec),
           TestCaseFun
       ).
  -
  -
  -% TODO VFS-6201 rm when connecting via gs as nobody becomes possible
  -%% @private
  --spec filter_scenarios_available_for_client(aai:auth(), [scenario_template()]) ->
  -    [scenario_template()].
  -filter_scenarios_available_for_client(?NOBODY, ScenarioTemplates) ->
  -    lists:filter(fun(#scenario_template{type = Type}) ->
  -        not lists:member(Type, ?GS_SCENARIO_TYPES)
  -    end, ScenarioTemplates);
  -filter_scenarios_available_for_client(_, ScenarioTemplates) ->
  -    ScenarioTemplates.
   
   
   %% @private
  
positive.code:     CorrectDataSets = generate_correct_data_sets(DataSpec),
  
      lists:foldl(fun(Client, OuterAcc) ->
          case filter_scenarios_available_for_client(Client, ScenarioTemplates) of
              [] ->
                  OuterAcc;
              AvailableScenarios ->
                  CorrectDataSetsNum = length(CorrectDataSets),
                  AvailableScenariosNum = length(AvailableScenarios),
                  ScenarioPerDataSet = case AvailableScenariosNum > CorrectDataSetsNum of
                      true ->
                          ct:fail("Not enough data sets compared to available scenarios");
                      false ->
                          RandomizedScenarios = lists:flatmap(
                              fun(_) -> lists_utils:shuffle(AvailableScenarios) end,
                              lists:seq(1, CorrectDataSetsNum div AvailableScenariosNum + 1)
                          ),
                          lists:zip(
                              lists:sublist(RandomizedScenarios, CorrectDataSetsNum),
                              CorrectDataSets
                          )
                  end,
                  OuterAcc and lists:foldl(fun({Scenario, DataSet}, InnerAcc) ->
                      TargetNode = lists_utils:random_element(TargetNodes),
  
                      SetupFun(),
                      TestCasePassed = run_exp_success_testcase(
                          TargetNode, Client, DataSet, VerifyFun, Scenario, Config
                      ),
                      TeardownFun(),
  
                      InnerAcc and TestCasePassed
                  end, true, ScenarioPerDataSet)
          end
      end, true, CorrectClients);
  run_expected_success_test_cases(Config, #suite_spec{
      target_nodes = TargetNodes,
  
negative.code:     teardown_fun = TeardownFun,
      verify_fun = VerifyFun,
  
      scenario_templates = AvailableScenarios,
      randomly_select_scenarios = true,
  
      data_spec = DataSpec
  