anchor.diff:      ok_all = [] :: [{binary(), val()}],
       syntax :: map(),
       path :: binary(),
  +    allow_unknown :: boolean(),
       opts :: parse_opts()
   }).
   
  
positive.code:             parse_opt_list(ListType, SyntaxOp, Key, [Val], Parse, [])
      end;
  
  parse_opt(Syntax, Key, Val, Parse) when is_map(Syntax) ->
      case is_list(Val) orelse is_map(Val) of
          true ->
              Path2 = path_key(Key, Parse),
              case parse(Val, Syntax, #{path=>Path2}) of
                  {ok, Parsed, NoOk2} ->
                      #parse{ok_all = OkAll, no_ok = NoOk} = Parse,
                      Parse2 = Parse#parse{no_ok = NoOk++NoOk2, ok_all = [{Path2, Parsed}|OkAll]},
  
negative.code:                  {error, Error} ->
                       {error, Error}
               end;
           no_spec when AllowUnknown ->
               #parse{ok=OK, ok_all=OkAll} = Parse,
               PathKey = path_key(Key, Parse),
               Parse2 = Parse#parse{
                   ok = [{Key, Val} | OK],
                   ok_all = [{PathKey, Val} | OkAll]
               },
               {ok, Parse2};
           no_spec ->
              #parse{no_ok=NoOk} = Parse,
              {ok, Parse#parse{no_ok = [path_key(Key, Parse) | NoOk]}}
  