-module(foo).
-export([verify/1]).

-spec verify([atom()]) -> ok | no_return().
verify(Options) ->
    verify(Options, []).

-spec verify([atom()], [atom()]) -> ok | no_return().
verify([foo | Options], Errors) ->
    verify(Options, Errors);
verify([bar | Options], Errors) ->
    verify(Options, Errors);
verify([Option | Options], Errors) ->
    verify(Options, [Option | Errors]);
verify([], []) ->
    ok;
verify([], Errors) ->
    erlang:error({bad_options, Errors}).
