/*
 * 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 runtime expression types.
 *
 * @coverage dart.server.generated.types
 */
public class RuntimeCompletionExpressionTypeKind {

  public static final String DYNAMIC = "DYNAMIC";

  public static final String FUNCTION = "FUNCTION";

  public static final String INTERFACE = "INTERFACE";

}
