/*
 * Copyright (c) 2018, 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.
 *
 * This file has been automatically generated.  Please do not edit it manually.
 * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
 */
package org.dartlang.analysis.server.protocol;

/**
 * An enumeration of the kind of values that can be suggested for a linked edit.
 *
 * @coverage dart.server.generated.types
 */
public class LinkedEditSuggestionKind {

  public static final String METHOD = "METHOD";

  public static final String PARAMETER = "PARAMETER";

  public static final String TYPE = "TYPE";

  public static final String VARIABLE = "VARIABLE";

}
