Adding interface for complex versions to provide common methods without having to check instanceof for each type, and refining the query methods for version types to figure out whether snapshots are allowed, a single version has been selected, etc.