anchor.diff:                ct_groupname/0,
                 ct_config/0,
                 ct_status/0,
  -              ct_groups_def/0,
  -              ct_tests_def/0,
  +              ct_group_def/0,
  +              ct_test_def/0,
                 ct_info/0
                ]).
   
  
positive.code: -type ct_group_ref() :: {group, ct_groupname()} |
              {group, ct_groupname(), ct_group_props_ref()} |
              {group, ct_groupname(), ct_group_props_ref(), ct_subgroups_def()}.
  -type ct_testcase_ref() :: {testcase, ct_testname(), ct_testcase_repeat_props()}.
  -type ct_testcase_repeat_props() :: {repeat, ct_test_repeat()} |
              {repeat_until_ok, ct_test_repeat()} |
              {repeat_until_fail, ct_test_repeat()}.
  -type ct_info() :: {timetrap, ct_info_timetrap()} |
  
negative.code:                 {CTHModule :: atom(), CTHInitArgs :: term()} |
                  {CTHModule :: atom(), CTHInitArgs :: term(), CTHPriority :: integer()}
              ].
  -type ct_test_def() :: ct_testname() | ct_group_ref() | ct_testcase_ref().
  
  -callback all() ->
      [TestDef :: ct_test_def()] |
      {skip, Reason :: term()}.
  
  -callback groups() ->
      [GroupDef :: ct_group_def()].
  
  -callback suite() ->
      [Info :: ct_info()].
  