/*
 * 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 folding regions.
 *
 * @coverage dart.server.generated.types
 */
public class FoldingKind {

  public static final String COMMENT = "COMMENT";

  public static final String CLASS_MEMBER = "CLASS_MEMBER";

  public static final String DIRECTIVES = "DIRECTIVES";

  public static final String DOCUMENTATION_COMMENT = "DOCUMENTATION_COMMENT";

  public static final String TOP_LEVEL_DECLARATION = "TOP_LEVEL_DECLARATION";

}
