> This could be solved using polymorphism: CommonsMedia, IRI, etc could
simply derive from StringValue. Similarly, Percentage could derive from
NumberValue, etc.
That violates Liskov Substitution [0] ;) If we go with this approach, we also should have a SquareValue that derives from RectangleValue, to have the basics covered :D