will return a non-empty