you could try with a case
statement instead.
Instead of
AND ( A.FIELD3 IN ('ONE', 'TWO')
OR (A.FIELD3 IN ('THREE','FOUR') AND A.FIELD4 BETWEEN :x AND :y))
Use
AND CASE WHEN A.FIELD3 IN ('ONE', 'TWO') THEN 1
WHEN A.FIELD3 IN ('THREE','FOUR') AND A.FIELD4 BETWEEN :x AND :y THEN 1 ELSE 0 END = 1