/*
 * Copyright (c) 2019, 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 kinds of elements.
 *
 * @coverage dart.server.generated.types
 */
public class ElementKind {

  public static final String CLASS = "CLASS";

  public static final String CLASS_TYPE_ALIAS = "CLASS_TYPE_ALIAS";

  public static final String COMPILATION_UNIT = "COMPILATION_UNIT";

  public static final String CONSTRUCTOR = "CONSTRUCTOR";

  public static final String CONSTRUCTOR_INVOCATION = "CONSTRUCTOR_INVOCATION";

  public static final String ENUM = "ENUM";

  public static final String ENUM_CONSTANT = "ENUM_CONSTANT";

  public static final String EXTENSION = "EXTENSION";

  public static final String FIELD = "FIELD";

  public static final String FILE = "FILE";

  public static final String FUNCTION = "FUNCTION";

  public static final String FUNCTION_INVOCATION = "FUNCTION_INVOCATION";

  public static final String FUNCTION_TYPE_ALIAS = "FUNCTION_TYPE_ALIAS";

  public static final String GETTER = "GETTER";

  public static final String LABEL = "LABEL";

  public static final String LIBRARY = "LIBRARY";

  public static final String LOCAL_VARIABLE = "LOCAL_VARIABLE";

  public static final String METHOD = "METHOD";

  public static final String MIXIN = "MIXIN";

  public static final String PARAMETER = "PARAMETER";

  public static final String PREFIX = "PREFIX";

  public static final String SETTER = "SETTER";

  public static final String TOP_LEVEL_VARIABLE = "TOP_LEVEL_VARIABLE";

  public static final String TYPE_PARAMETER = "TYPE_PARAMETER";

  public static final String UNIT_TEST_GROUP = "UNIT_TEST_GROUP";

  public static final String UNIT_TEST_TEST = "UNIT_TEST_TEST";

  public static final String UNKNOWN = "UNKNOWN";

}
