anchor.diff:                        (_) ->
                              false
                      end,
  -            class => user_options
  -           },
  -
  -      {auth_methods, def} =>
  +            class => user_option
  +           },
  +
  +      auth_methods =>
             #{default => ?SUPPORTED_AUTH_METHODS,
               chk => fun(As) ->
                              try
  
positive.code:                        (V) ->
                              check_string(V)
                      end,
               class => user_options
              },
  
         {key_cb, def} =>
             #{default => {ssh_file, []},
               chk => fun({Mod,Opts}) -> is_atom(Mod) andalso is_list(Opts);
                         (Mod) when is_atom(Mod) -> {true, {Mod,[]}};
                         (_) -> false
                      end,
               class => user_options
              },
  
         {profile, def} =>
             #{default => ?DEFAULT_PROFILE,
               chk => fun erlang:is_atom/1,
               class => user_options
              },
  
        {idle_time, def} =>
            #{default => infinity,
              chk => fun check_timeout/1,
              class => user_options
             },
  
         %% This is a "SocketOption"...
         %% {fd, def} =>
         %%     #{default => undefined,
         %%       chk => fun erlang:is_integer/1,
         %%       class => user_options
         %%      },
  
         {disconnectfun, def} =>
             #{default => fun(_) -> void end,
               chk => fun check_function1/1,
               class => user_options
              },
  
         {unexpectedfun, def} => 
             #{default => fun(_,_) -> report end,
               chk => fun check_function2/1,
               class => user_options
              },
  
         {ssh_msg_debug_fun, def} =>
             #{default => fun(_,_,_,_) -> void end,
               chk => fun check_function4/1,
               class => user_options
              },
  
        {rekey_limit, def} =>
            #{default => {3600000, 1024000000}, % {1 hour, 1 GB}
              chk => fun({infinity, infinity}) ->
                             true;
  
negative.code: 
  -type option_class() :: internal_options | socket_options | user_options . 
  
  -type option_declaration() :: #{class := user_option | undoc_user_option,
                                  chk := fun((any()) -> boolean() | {true,any()}),
                                  default => any()
                                 }.
  
  -type option_key() :: atom().
  
  -type option_declarations() :: #{ option_key() := option_declaration() }.
  
  -type error() :: {error,{eoptions,any()}} .
  
  