anchor.diff:                        (_) ->
                              false
                      end,
  -            class => user_options
  -           },
  -
  -      {pwdfun, def} =>
  +            class => user_option
  +           },
  +
  +      pwdfun =>
             #{default => undefined,
               chk => fun(V) -> check_function4(V) orelse check_function2(V) end,
  -            class => user_options
  -           },
  -
  -      {negotiation_timeout, def} =>
  +            class => user_option
  +           },
  +
  +      negotiation_timeout =>
             #{default => 2*60*1000,
               chk => fun check_timeout/1,
  -            class => user_options
  -           },
  -
  -      {max_sessions, def} =>
  +            class => user_option
  +           },
  +
  +      max_sessions =>
             #{default => infinity,
               chk => fun check_pos_integer/1,
  -            class => user_options
  -           },
  -
  -      {max_channels, def} =>
  +            class => user_option
  +           },
  +
  +      max_channels =>
             #{default => infinity,
               chk => fun check_pos_integer/1,
  -            class => user_options
  -           },
  -
  -      {parallel_login, def} =>
  +            class => user_option
  +           },
  +
  +      parallel_login =>
             #{default => false,
               chk => fun erlang:is_boolean/1,
  -            class => user_options
  -           },
  -
  -      {minimal_remote_max_packet_size, def} =>
  +            class => user_option
  +           },
  +
  +      minimal_remote_max_packet_size =>
             #{default => 0,
               chk => fun check_pos_integer/1,
  -            class => user_options
  -           },
  -
  -      {failfun, def} =>
  +            class => user_option
  +           },
  +
  +      failfun =>
             #{default => fun(_,_,_) -> void end,
               chk => fun(V) -> check_function3(V) orelse
                                    check_function2(V) % Backwards compatibility
                      end,
  -            class => user_options
  -           },
  -
  -      {connectfun, def} =>
  +            class => user_option
  +           },
  +
  +      connectfun =>
             #{default => fun(_,_,_) -> void end,
               chk => fun check_function3/1,
  -            class => user_options
  +            class => user_option
              },
   
   %%%%% Undocumented
  -      {infofun, def} =>
  +      infofun =>
             #{default => fun(_,_,_) -> void end,
               chk => fun(V) -> check_function3(V) orelse
                                    check_function2(V) % Backwards compatibility
                      end,
  -            class => user_options
  +            class => undoc_user_option
              }
        };
   
   default(client) ->
       (default(common))
           #{
  -      {dsa_pass_phrase, def} =>
  +      dsa_pass_phrase =>
             #{default => undefined,
               chk => fun check_string/1,
  -            class => user_options
  -           },
  -
  -      {rsa_pass_phrase, def} =>
  +            class => user_option
  +           },
  +
  +      rsa_pass_phrase =>
             #{default => undefined,
               chk => fun check_string/1,
  -            class => user_options
  -           },
  -
  -      {ecdsa_pass_phrase, def} =>
  +            class => user_option
  +           },
  +
  +      ecdsa_pass_phrase =>
             #{default => undefined,
               chk => fun check_string/1,
  -            class => user_options
  -           },
  -
  -%%% Not yet implemented      {ed25519_pass_phrase, def} =>
  +            class => user_option
  +           },
  +
  +%%% Not yet implemented      ed25519_pass_phrase =>
   %%% Not yet implemented          #{default => undefined,
   %%% Not yet implemented            chk => fun check_string/1,
  -%%% Not yet implemented            class => user_options
  +%%% Not yet implemented            class => user_option
   %%% Not yet implemented           },
   %%% Not yet implemented
  -%%% Not yet implemented      {ed448_pass_phrase, def} =>
  +%%% Not yet implemented      ed448_pass_phrase =>
   %%% Not yet implemented          #{default => undefined,
   %%% Not yet implemented            chk => fun check_string/1,
  -%%% Not yet implemented            class => user_options
  +%%% Not yet implemented            class => user_option
   %%% Not yet implemented           },
   %%% Not yet implemented
  -      {silently_accept_hosts, def} =>
  +      silently_accept_hosts =>
             #{default => false,
               chk => fun check_silently_accept_hosts/1,
  -            class => user_options
  -           },
  -
  -      {user_interaction, def} =>
  +            class => user_option
  +           },
  +
  +      user_interaction =>
             #{default => true,
               chk => fun erlang:is_boolean/1,
  -            class => user_options
  -           },
  -
  -      {save_accepted_host, def} =>
  +            class => user_option
  +           },
  +
  +      save_accepted_host =>
             #{default => true,
               chk => fun erlang:is_boolean/1,
  -            class => user_options
  -           },
  -
  -      {dh_gex_limits, def} =>
  +            class => user_option
  +           },
  +
  +      dh_gex_limits =>
             #{default => {1024, 6144, 8192},      % FIXME: Is this true nowadays?
               chk => fun({Min,I,Max}) ->
                              lists:all(fun check_pos_integer/1,
                                        [Min,I,Max]);
                         (_) -> false
                      end,
  -            class => user_options
  -           },
  -
  -      {connect_timeout, def} =>
  +            class => user_option
  +           },
  +
  +      connect_timeout =>
             #{default => infinity,
               chk => fun check_timeout/1,
  -            class => user_options
  -           },
  -
  -      {user, def} =>
  +            class => user_option
  +           },
  +
  +      user =>
             #{default => 
                   begin
                       Env = case os:type() of
  
positive.code:          get_value/5,  get_value/6,
           put_value/5,
           delete_key/5,
           handle_options/2
          ]).
  
  -export_type([private_options/0
  
negative.code: 
  
  check_fun(Key, Defs) ->
      #{chk := Fun} = maps:get(Key, Defs),
      Fun.
  
  %%%================================================================
  