first pass - 1) o[t]:aXbYc O[T]:XY - [T]abc if no sticky ops in O 2) o[t]:aXbYc O[T]:YX - [T]abc if no sticky ops in O 3) o[t]:aXbYc O[T]:XY - [T]abc if sticky ops in O and no selection ops in a or b 4) (tricky case) o[t]:aXbYc O[T]:YX - [T]abc if sticky ops in Y and no selection ops in a or b or X