refactoring PlaylistItemProperty and related classes such that
comparison, getStringValue, and other methods are easier to understand and less error
prone.