# File lib/parser/diagnostic.rb, line 47
    def initialize(level, reason, arguments, location, highlights=[])
      unless LEVELS.include?(level)
        raise ArgumentError,
              "Diagnostic#level must be one of #{LEVELS.join(', ')}; " \
              "#{level.inspect} provided."
      end
      raise 'Expected a location' unless location

      @level       = level
      @reason      = reason
      @arguments   = (arguments || {}).dup.freeze
      @location    = location
      @highlights  = highlights.dup.freeze

      freeze
    end