Also, you say if there is no "a", it should be treated as empty. But what is your definition of empty? That depends on the data type. For string, it's an empty string, yeah. But for integer? Is a non-existing integer smaller than 0? What if it's a Liquid drop with a custom comparison method? What does "empty" mean for that?

I just don't see a good generic solution to this.