anchor.diff:  
   
     SelectorBuilder fields(List<String> fields) {
  -     if (paramFields != null) {
  -       throw 'Fields parameter may be set only once for selector';
  -     }
  -     paramFields = {};
  -     for (var field in fields) {
  -       paramFields[field] = 1;
  -     }
  -     return this;
  +    if (paramFields == null) {
  +      paramFields = {};
  +    }
  +    for (var field in fields) {
  +      paramFields[field] = 1;
  +    }
  +    return this;
     }
     SelectorBuilder excludeFields(List<String> fields) {
  -    if (paramFields != null) {
  -      throw 'Fields parameter may be set only once for selector';
  -    }
  -    paramFields = {};
  +    if (paramFields == null) {
  +      paramFields = {};
  +    }
       for (var field in fields) {
         paramFields[field] = 0;
       }
  
positive.code:     }
      return this;
    }
  /// Combine current expression with expression in parameter. 
  /// [See MongoDB doc](http://docs.mongodb.org/manual/reference/operator/and/#op._S_and)
  /// [SelectorBuilder] provides implicit `and` operator for chained queries so these two expression will produce
  /// identical MongoDB queries
  ///  
  ///     where.eq('price', 1.99).lt('qty', 20).eq('sale', true);
  ///     where.eq('price', 1.99).and(where.lt('qty',20)).and(where.eq('sale', true))
  ///
  /// Both these queries would produce json map:
  ///  
  ///     {'\$query': {'\$and': [{'price':1.99},{'qty': {'\$lt': 20 }}, {'sale': true }]}}
    SelectorBuilder and(SelectorBuilder other) {
      if (_query.isEmpty) {
  
negative.code:     _addExpressionMap(other._query);
      return this;
    }
  /// Combine current expression with expression in parameter by logical operator **OR**.
  /// [See MongoDB doc](http://docs.mongodb.org/manual/reference/operator/and/#op._S_or)
  /// For example
  ///    inventory.find(where.eq('price', 1.99).and(where.lt('qty',20).or(where.eq('sale', true))));
  ///
  /// This query will select all documents in the inventory collection where:
  /// * the **price** field value equals 1.99 and
  /// * either the **qty** field value is less than 20 or the **sale** field value is true
  /// MongoDB json query from this expression would be
  ///      {'\$query': {'\$and': [{'price':1.99}, {'\$or': [{'qty': {'\$lt': 20 }}, {'sale': true }]}]}}
    SelectorBuilder or(SelectorBuilder other) {
  