optional predicate whitespace accounted for