module Scorm
  module Errors
    class InvalidManifest         < RuntimeError; end
    class NoMetadataError         < InvalidManifest; end
    class DuplicateMetadataError  < InvalidManifest; end
    class NoOrganizationsError    < InvalidManifest; end
    class DuplicateOrganizationsError < InvalidManifest; end
    class UnsupportedSCORMVersion < RuntimeError; end
    class InvalidSCORMVersion     < InvalidManifest; end
  end
end

module Scorm
  module Errors
    class InvalidManifest         < RuntimeError; end
    class RequiredItemMissing     < InvalidManifest; end
    class DuplicateItem           < InvalidManifest; end

    class NoMetadataError         < RequiredItemMissing; end
    class DuplicateMetadataError  < DuplicateItem; end
    class NoOrganizationsError    < RequiredItemMissing; end
    class DuplicateOrganizationsError < DuplicateItem; end

    class UnsupportedSCORMVersion < RuntimeError; end
    class InvalidSCORMVersion     < InvalidManifest; end
  end
end

Add RequiredItemMissing and DuplicateItem exceptions.
Add RequiredItemMissing and DuplicateItem exceptions.

NoMetadataError/NoOrganizationsError and their related "too-many" exceptions is too specific,
and we would like to avoid adding those kinds of exceptions every time the standard requires
one, and only one, of some kind of element.

Therefore, introduce the RequiredItemMissing and DuplicateItem, and have the more specific inherit from these
