library;
//
// Problems in library:
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:38:10: Error: 'foo' isn't a type.
//   print(<foo);
//          ^^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:38:10: Error: Expected '>' after this.
//   print(<foo);
//          ^^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:38:13: Error: Expected '[' before this.
//   print(<foo);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:39:9: Error: Expected an identifier, but got '>'.
// Try inserting an identifier before '>'.
//   print(>foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:40:9: Error: Expected an identifier, but got '<='.
// Try inserting an identifier before '<='.
//   print(<=foo);
//         ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:41:9: Error: Expected an identifier, but got '>='.
// Try inserting an identifier before '>='.
//   print(>=foo);
//         ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:42:9: Error: Expected an identifier, but got '=='.
// Try inserting an identifier before '=='.
//   print(==foo);
//         ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:43:9: Error: '+' is not a prefix operator.
// Try removing '+'.
//   print(+foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:44:9: Error: Expected an identifier, but got '/'.
// Try inserting an identifier before '/'.
//   print(/foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:45:9: Error: Expected an identifier, but got '~/'.
// Try inserting an identifier before '~/'.
//   print(~/foo);
//         ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:46:9: Error: Expected an identifier, but got '*'.
// Try inserting an identifier before '*'.
//   print(*foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:47:9: Error: Expected an identifier, but got '%'.
// Try inserting an identifier before '%'.
//   print(%foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:48:9: Error: Expected an identifier, but got '|'.
// Try inserting an identifier before '|'.
//   print(|foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:49:9: Error: Expected an identifier, but got '^'.
// Try inserting an identifier before '^'.
//   print(^foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:50:9: Error: Expected an identifier, but got '&'.
// Try inserting an identifier before '&'.
//   print(&foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:51:9: Error: Expected an identifier, but got '<<'.
// Try inserting an identifier before '<<'.
//   print(<<foo);
//         ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:52:9: Error: Expected an identifier, but got '>>'.
// Try inserting an identifier before '>>'.
//   print(>>foo);
//         ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:56:13: Error: '~' isn't a binary operator.
//   print(foo ~ 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:14:13: Error: The operator '<' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '<' operator.
//   print(foo < 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:15:13: Error: The operator '>' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '>' operator.
//   print(foo > 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:16:13: Error: The operator '<=' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '<=' operator.
//   print(foo <= 2);
//             ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:17:13: Error: The operator '>=' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '>=' operator.
//   print(foo >= 2);
//             ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:19:13: Error: The operator '-' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '-' operator.
//   print(foo - 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:20:13: Error: The operator '+' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
//   print(foo + 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:21:13: Error: The operator '/' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '/' operator.
//   print(foo / 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:22:13: Error: The operator '~/' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '~/' operator.
//   print(foo ~/ 2);
//             ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:23:13: Error: The operator '*' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '*' operator.
//   print(foo * 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:24:13: Error: The operator '%' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '%' operator.
//   print(foo % 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:25:13: Error: The operator '|' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '|' operator.
//   print(foo | 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:26:13: Error: The operator '^' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '^' operator.
//   print(foo ^ 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:27:13: Error: The operator '&' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '&' operator.
//   print(foo & 2);
//             ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:28:13: Error: The operator '<<' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '<<' operator.
//   print(foo << 2);
//             ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:29:13: Error: The operator '>>' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '>>' operator.
//   print(foo >> 2);
//             ^^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:31:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
//   print(foo[2] = 2);
//            ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:32:12: Error: The operator '[]' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '[]' operator.
//   print(foo[2]);
//            ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:33:9: Error: The operator '~' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a '~' operator.
//   print(~foo);
//         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:34:9: Error: The operator 'unary-' isn't defined for the class 'Foo'.
//  - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
// Try correcting the operator to an existing operator, or defining a 'unary-' operator.
//   print(-foo);
//         ^
//
import self as self;
import "dart:core" as core;

class Foo extends core::Object {
  synthetic constructor •() → self::Foo*
    : super core::Object::•()
    ;
  abstract member-signature get /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ _identityHashCode() → core::int*; -> core::Object::_identityHashCode
  abstract member-signature method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
  abstract member-signature method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
  abstract member-signature method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
  abstract member-signature method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
  abstract member-signature operator /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ ==(dynamic other) → core::bool*; -> core::Object::==
  abstract member-signature get /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ hashCode() → core::int*; -> core::Object::hashCode
  abstract member-signature method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ toString() → core::String*; -> core::Object::toString
  abstract member-signature method /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
  abstract member-signature get /* from org-dartlang-sdk:///sdk/lib/_internal/vm/lib/object_patch.dart */ runtimeType() → core::Type*; -> core::Object::runtimeType
}
static method main() → dynamic {
  self::Foo* foo = new self::Foo::•();
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:14:13: Error: The operator '<' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '<' operator.
  print(foo < 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:15:13: Error: The operator '>' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '>' operator.
  print(foo > 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:16:13: Error: The operator '<=' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '<=' operator.
  print(foo <= 2);
            ^^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:17:13: Error: The operator '>=' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '>=' operator.
  print(foo >= 2);
            ^^");
  core::print(foo.{self::Foo::==}(2));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:19:13: Error: The operator '-' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '-' operator.
  print(foo - 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:20:13: Error: The operator '+' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '+' operator.
  print(foo + 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:21:13: Error: The operator '/' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '/' operator.
  print(foo / 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:22:13: Error: The operator '~/' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '~/' operator.
  print(foo ~/ 2);
            ^^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:23:13: Error: The operator '*' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '*' operator.
  print(foo * 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:24:13: Error: The operator '%' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '%' operator.
  print(foo % 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:25:13: Error: The operator '|' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '|' operator.
  print(foo | 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:26:13: Error: The operator '^' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '^' operator.
  print(foo ^ 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:27:13: Error: The operator '&' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '&' operator.
  print(foo & 2);
            ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:28:13: Error: The operator '<<' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '<<' operator.
  print(foo << 2);
            ^^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:29:13: Error: The operator '>>' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '>>' operator.
  print(foo >> 2);
            ^^");
  core::print(let final self::Foo* #t1 = foo in let final core::int* #t2 = 2 in let final core::int* #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:31:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '[]=' operator.
  print(foo[2] = 2);
           ^" in #t3);
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:32:12: Error: The operator '[]' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
  print(foo[2]);
           ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:33:9: Error: The operator '~' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a '~' operator.
  print(~foo);
        ^");
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:34:9: Error: The operator 'unary-' isn't defined for the class 'Foo'.
 - 'Foo' is from 'pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart'.
Try correcting the operator to an existing operator, or defining a 'unary-' operator.
  print(-foo);
        ^");
  core::print(<invalid-type>[]);
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:39:9: Error: This couldn't be parsed.
  print(>foo);
        ^".>(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:40:9: Error: This couldn't be parsed.
  print(<=foo);
        ^".<=(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:41:9: Error: This couldn't be parsed.
  print(>=foo);
        ^".>=(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:42:9: Error: This couldn't be parsed.
  print(==foo);
        ^".{core::Object::==}(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:43:9: Error: This couldn't be parsed.
  print(+foo);
        ^".+(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:44:9: Error: This couldn't be parsed.
  print(/foo);
        ^"./(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:45:9: Error: This couldn't be parsed.
  print(~/foo);
        ^".~/(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:46:9: Error: This couldn't be parsed.
  print(*foo);
        ^".*(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:47:9: Error: This couldn't be parsed.
  print(%foo);
        ^".%(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:48:9: Error: This couldn't be parsed.
  print(|foo);
        ^".|(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:49:9: Error: This couldn't be parsed.
  print(^foo);
        ^".^(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:50:9: Error: This couldn't be parsed.
  print(&foo);
        ^".&(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:51:9: Error: This couldn't be parsed.
  print(<<foo);
        ^".<<(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:52:9: Error: This couldn't be parsed.
  print(>>foo);
        ^".>>(foo));
  core::print(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/operator_method_not_found.dart:56:13: Error: '~' isn't a binary operator.
  print(foo ~ 2);
            ^");
}
