anchor.diff:              match(Cond, SubValue, Cmp)
       end;
   
  -match({Props} = Sel, _Value, _Cmp) when length(Props) > 1 ->
  +match({[_, _ | _] = _Props} = Sel, _Value, _Cmp) ->
       erlang:error({unnormalized_selector, Sel}).
  
positive.code:     {[{Field, norm_ops(Cond)}]};
  
  % An implicit $and
  norm_ops({Props}) when length(Props) > 1 ->
      {[{<<"$and">>, [norm_ops({[P]}) || P <- Props]}]};
  
  % A bare value condition means equality
  
negative.code: 
  % Matches when all elements in values match the
  % sub-selector Arg.
  match({[{<<"$allMatch">>, Arg}]}, [_ | _] = Values, Cmp) ->
      try
          lists:foreach(fun(V) ->
              case match(Arg, V, Cmp) of
  