I agree with Rick. Not just for api coverage, but having a method "filterByString" implies type. If you're after separating type, then the filter object should be a constructed object that has this abstracted out. E.g. `new Filter('theString')` and then `filterBy` simple consumes a Filter object, regardless of how it was made. 

Another note, having the details of what a "filter" is in two places causes fragmentation. In this case, if we had two separate methods, the 'how' of the filter object is disassociated with its application. 

And an aside, any time i've ever had the name in a primitive in a method name, it caused later clutter and difficulty properly abstracting out features.