anchor.diff:  
   -spec value(orset()) -> [member()].
   value(ORSet) ->
  -    Iter = gb_trees:iterator(ORSet),
  -    Next = gb_trees:next(Iter),
  -    value(Next, [], ORSet).
  +    gb_trees_ext:fold(fun(Elem, Tokens, Acc0) ->
  +                case length(valid_tokens(Tokens)) > 0 of
  +                    true ->
  +                        Acc0 ++ [Elem];
  +                    false ->
  +                        Acc0
  +                end
  +        end, [], ORSet).
   
   -spec value(any(), orset()) -> [member()] | orddict:orddict().
   value({fragment, Elem}, ORSet) ->
  
positive.code:     ORSet.
  
  % -spec merge(orset(), orset()) -> orset().
  % merge(ORDictA, ORDictB) ->
  %     orddict:merge(fun(_Elem,TokensA,TokensB) ->
  %             orddict:merge(fun(_Token,BoolA,BoolB) ->
  %                     BoolA or BoolB
  %                 end, TokensA, TokensB)
  %         end, ORDictA, ORDictB).
  
  % -spec equal(orset(), orset()) -> boolean().
  % equal(ORDictA, ORDictB) ->
  %     ORDictA == ORDictB. % Everything inside is ordered, so this should work
  
  %% @doc the precondition context is a fragment of the CRDT that
  %% operations with pre-conditions can be applied too.  In the case of
  
negative.code:         false ->
              orddict:new()
      end;
  value(removed, ORSet) ->
      gb_trees_ext:fold(fun(Elem, Tokens, Acc0) ->
                  case length(removed_tokens(Tokens)) > 0 of
                      true ->
                          Acc0 ++ [Elem];
                      false ->
                          Acc0
                  end
          end, [], ORSet);
  value(_,ORSet) ->
      value(ORSet).
  
  -spec update(orset_op(), actor(), orset()) ->
      {ok, orset()} | {error, {precondition, {not_present, member()}}}.
  