/*
 * 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 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 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";

}
