I think this is a bug in recast -- calling this.remove() on the alternate ends up removing the entire if statement because `removeRequests` is looked at only in visitArray which is called on each BlockStatement but since no new block is created, the request is processed at the next level up and the entire if statement is removed.