/*
 * 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 refactorings that can be created.
 *
 * @coverage dart.server.generated.types
 */
public class RefactoringKind {

  public static final String CONVERT_GETTER_TO_METHOD = "CONVERT_GETTER_TO_METHOD";

  public static final String CONVERT_METHOD_TO_GETTER = "CONVERT_METHOD_TO_GETTER";

  public static final String EXTRACT_LOCAL_VARIABLE = "EXTRACT_LOCAL_VARIABLE";

  public static final String EXTRACT_METHOD = "EXTRACT_METHOD";

  public static final String INLINE_LOCAL_VARIABLE = "INLINE_LOCAL_VARIABLE";

  public static final String INLINE_METHOD = "INLINE_METHOD";

  public static final String MOVE_FILE = "MOVE_FILE";

  public static final String RENAME = "RENAME";

  public static final String SORT_MEMBERS = "SORT_MEMBERS";

}
