class QuerySnapshot implements Iterable<QueryDocumentSnapshot> {

  @Override
  public boolean equals(@Nullable Object obj) {
    if (this == obj) {
      return true;
    }
    if (!(obj instanceof QuerySnapshot)) {
      return false;
    }
    QuerySnapshot other = (QuerySnapshot) obj;
    return firestore.equals(other.firestore)
        && originalQuery.equals(other.originalQuery)
        && snapshot.equals(other.snapshot)
        && metadata.equals(other.metadata);
  }

    QuerySnapshot(Query originalQuery, ViewSnapshot snapshot, FirebaseFirestore firestore);

}