Make and/or in PatternFactory take arbitrary number of arguments