// Copyright (c) 2017, 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.

import 'package:kernel/ast.dart' show Name;

final Name ampersandName = new Name("&");

final Name barName = new Name("|");

final Name callName = new Name("call");

final Name caretName = new Name("^");

final Name divisionName = new Name("/");

final Name emptyName = new Name("");

final Name equalsName = new Name('==');

final Name greaterThanName = new Name(">");

final Name greaterThanOrEqualsName = new Name(">=");

final Name indexGetName = new Name("[]");

final Name indexSetName = new Name("[]=");

final Name leftShiftName = new Name("<<");

final Name lengthName = new Name("length");

final Name lessThanName = new Name("<");

final Name lessThanOrEqualsName = new Name("<=");

final Name minusName = new Name("-");

final Name multiplyName = new Name("*");

final Name mustacheName = new Name("~/");

final Name noSuchMethodName = new Name("noSuchMethod");

final Name percentName = new Name("%");

final Name plusName = new Name("+");

final Name rightShiftName = new Name(">>");

final Name tripleShiftName = new Name(">>>");

final Name sublistName = new Name("sublist");

final Name unaryMinusName = new Name("unary-");

final Name containsKeyName = new Name("containsKey");
