anchor.diff:  
   parse_options({child_spec, Options}, Module) when is_list(Options), is_atom(Module) ->
     DefaultValues = #{id=>Module, start=>Module, start_args=>[], restart=>permanent, shutdown=>2000, type=>worker, modules=>[Module]},
  +  do_parse_options(Options, DefaultValues);
  +parse_options({dynamic_child_spec, Options}, Module) when is_list(Options), is_atom(Module) ->
  +  DefaultValues = #{id=>Module, start=>Module, start_args=>[], restart=>temporary, shutdown=>brutal_kill
  +    , type=>worker, modules=>[Module]},
  +  do_parse_options(Options, DefaultValues);
  +parse_options({dynamic_sup_restart_strategy, Options}, []) when is_list(Options) ->
  +  DefaultValues = #{strategy=>simple_one_for_one, intensity=>1, period=>60},
     do_parse_options(Options, DefaultValues);
   parse_options({sup_restart_strategy, Options}, []) when is_list(Options) ->
     DefaultValues = #{strategy=>one_for_one, intensity=>4, period=>60},
  
positive.code: sup_restart_strategy() ->
    sup_restart_strategy([]).
  
  sup_restart_strategy(Options) when is_list(Options) ->
    OptionsMap = parse_options({sup_restart_strategy, Options}, []),
    sup_restart_strategy(OptionsMap);
  
negative.code: child_spec_test() ->
    ?assertEqual({gws_test, {gws_test, start_link, []}, permanent, 2000, worker, [gws_test]},
      child_spec(gws_test)),
  
    ?assertEqual({gws_test, {gws_test, start_link, []}, temporary, brutal_kill, worker, [gws_test]},
      child_spec(gws_test, dynamic)),
  
    ?assertEqual({gws_test, {gws_test, start_link, []}, permanent, 2000, supervisor, [gws_test]},
      child_spec(gws_test, supervisor)),
    ok.
  
  %%-------------------------------------------------------------------
  