anchor.diff:    ///
     /// After a [FieldPath.documentId] order by call, you cannot add any more [orderBy]
     /// calls.
  +  ///
     /// Furthermore, you may not use [orderBy] on the [FieldPath.documentId] [field] when
     /// using [startAfterDocument], [startAtDocument], [endAfterDocument],
     /// or [endAtDocument] because the order by clause on the document id
  
positive.code: 
    /// Asserts that the query [field] is either a String or a [FieldPath].
    void _assertValidFieldType(dynamic field) {
      assert(field is String || field is FieldPath,
          'Supported [field] types are [String] and [FieldPath].');
    }
  
  
negative.code: 
      // Conditions can be chained from other [Query] instances
      void addCondition(dynamic field, String operator, dynamic value) {
        List<dynamic> condition;
  
        if (field == FieldPath.documentId) {
          condition = <dynamic>[field, operator, value];
        } else {
          FieldPath fieldPath =
              field is String ? FieldPath.fromString(field) : field as FieldPath;
          condition = <dynamic>[fieldPath, operator, value];
        }
  
        assert(
            conditions
                .where((List<dynamic> item) => equality.equals(condition, item))
  