                         # the old or new document
                         $or: [
                             selector: $in: [null, instanceId]
-                        ,
-                            $and: subfieldSelectorMatcher
-                        ]
-                    ,
-                        $or: [
-                            # The watcher's set of docIds might have changed
-                            # because its selector mentions a changed subfield
-                            $or: changedSubfieldSelectorMatcher
-                        ,
-                            # The watcher's set of docIds might have changed
-                            # because its sort key mentions a changed subfield
-                            $or: changedSubfieldSortSpecMatcher
-                        ,
-                            # The watcher's set of field values might have changed
-                            # because its projection mentions a changed subfield
-                            'fields._': false
-                            $or: changedSubfieldAlacarteProjectionMatcher
-                        ,
-                            'fields._': $in: [null, true]
-                            $or: changedSubfieldOverrideProjectionMatcher
                         ]
                     ]
+                if subfieldSelectorMatcher.length
+                    watcherMatcher.$and[0].$or.push
+                        $and: subfieldSelectorMatcher
+                if changeConditions.length
+                    watcherMatcher.$and.push
+                        $or: changeConditions
 
                 watcherMatcher
 

                addSelectorClauses [], mutableOldValues, mutableNewValues


                watcherMatcher =
                    modelName: modelName
                    $and: [

                            if numWatchersReset
                                console.log "    <#{watcherModelName}>.#{watcherReactiveName}:
                                    #{numWatchersReset} watchers reset"
                                # console.log "selector: #{JSON.stringify selector, null, 4}"

                            lockRelease()
                )
