// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

const String CODE = 'code';
const String COMPLETION_RESULTS = 'completion.results';
const String CONTEXT_MESSAGES = 'contextMessages';
const String CORRECTION = 'correction';
const String EDITS = 'edits';
const String FILE = 'file';
const String FILE_STAMP = 'fileStamp';
const String HAS_FIX = 'hasFix';
const String LENGTH = 'length';
const String LOCATION = 'location';
const String MESSAGE = 'message';
const String OFFSET = 'offset';
const String REPLACEMENT = 'replacement';
const String SEVERITY = 'severity';
const String STACK_TRACE = 'stackTrace';
const String START_COLUMN = 'startColumn';
const String START_LINE = 'startLine';
const String SUBSCRIPTIONS = 'subscriptions';
const String TYPE = 'type';
const String URL = 'url';
const String VERSION = 'version';
