See Lucene-9940. I find it valid for current Lucene.Net.
DisjunctionMaxQuery stores its disjuncts in a java array, and its equals() implementation uses Arrays.equal() when checking equality. This means that two queries with the same disjuncts but added in a different order will compare as different, even though their results will be identical. We should replace the array with a Set.
Fix it may break current behavior, but in case someone need it, I will create a PR.