anchor.diff:  %% - dynamic subtypes must be last in the list of subtypes
   
   types() ->
  -    [ {root
  +    [ {'T'
         , [ {numeric, fun erlang:is_number/1}
           , {atom, fun erlang:is_atom/1}
           , {list, fun erlang:is_list/1}
  
positive.code: %% For lists and tuples, the LeafData stores a list of type specs
  %% for each list/tuple element position.
  leaf_data_recur(V, []) ->
      lists:map(fun(D) -> new(root, D) end, V);
  leaf_data_recur(V, LeafData) ->
      lists:map(fun({D, S}) -> add(D, S) end, lists:zip(V, LeafData)).
  
  
negative.code:     end.
  
  %% Initialize a new data spec
  new() -> new('T').
  
  new(Class) -> {Class, 0, sample_data(), []}.
  
  