I thought about it, but they are actually pretty different. One uses expression factory to build an express the other analyzes the JSON object. Also StreamPredicateList is used outside of elastic so the checks here don't make sense in a generic concept.