anchor.diff:                    config_files=[] :: [file:filename()],
                     goals=[] :: [depsolver:constraint()],
                     providers = [] :: [rcl_provider:t()],
  -                  available_apps = [] :: [app_descriptor()],
  +                  available_apps = [] :: [rcl_app_info:t()],
                     default_release :: {rcl_release:name(), rcl_release:vsn()},
                     releases :: ec_dictionary:dictionary({ReleaseName::atom(),
                                                           ReleaseVsn::string()},
  
positive.code: default_release(M, Name, Vsn) ->
      M#state_t{default_release={Name, Vsn}}.
  
  -spec available_apps(t()) -> [app_descriptor()].
  available_apps(#state_t{available_apps=Apps}) ->
      Apps.
  
  -spec available_apps(t(), [app_descriptor()]) -> t().
  available_apps(M, NewApps) ->
      M#state_t{available_apps=NewApps}.
  
  
negative.code: %%============================================================================
  %% types
  %%============================================================================
  
  -type releases() :: ec_dictionary:dictionary({rcl_release:name(),
                                                rcl_release:vsn()},
  