library;
//
// Problems in library:
//
// pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Method not found: 'dynamic'.
//     dynamic();
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Method not found: 'dynamic'.
//     use(dynamic());
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Method not found: 'T'.
//     T();
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Method not found: 'T'.
//     use(T());
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Method not found: 'Func'.
//     Func();
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Method not found: 'Func'.
//     use(Func());
//         ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:29:5: Error: Setter not found: 'C'.
//     C = 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:30:9: Error: Setter not found: 'C'.
//     use(C = 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:31:5: Error: Setter not found: 'dynamic'.
//     dynamic = 42;
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:32:9: Error: Setter not found: 'dynamic'.
//     use(dynamic = 42);
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:33:5: Error: Setter not found: 'T'.
//     T = 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:34:9: Error: Setter not found: 'T'.
//     use(T = 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:35:5: Error: Setter not found: 'Func'.
//     Func = 42;
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:36:9: Error: Setter not found: 'Func'.
//     use(Func = 42);
//         ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:38:5: Error: Setter not found: 'C'.
//     C++;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:39:9: Error: Setter not found: 'C'.
//     use(C++);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:40:5: Error: Setter not found: 'dynamic'.
//     dynamic++;
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:41:9: Error: Setter not found: 'dynamic'.
//     use(dynamic++);
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:42:5: Error: Setter not found: 'T'.
//     T++;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:43:9: Error: Setter not found: 'T'.
//     use(T++);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:44:5: Error: Setter not found: 'Func'.
//     Func++;
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:45:9: Error: Setter not found: 'Func'.
//     use(Func++);
//         ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:47:7: Error: Setter not found: 'C'.
//     ++C;
//       ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:48:11: Error: Setter not found: 'C'.
//     use(++C);
//           ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:49:7: Error: Setter not found: 'dynamic'.
//     ++dynamic;
//       ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:50:11: Error: Setter not found: 'dynamic'.
//     use(++dynamic);
//           ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:51:7: Error: Setter not found: 'T'.
//     ++T;
//       ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:52:11: Error: Setter not found: 'T'.
//     use(++T);
//           ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:53:7: Error: Setter not found: 'Func'.
//     ++Func;
//       ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:54:11: Error: Setter not found: 'Func'.
//     use(++Func);
//           ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:56:5: Error: Setter not found: 'C'.
//     C--;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:57:9: Error: Setter not found: 'C'.
//     use(C--);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:58:5: Error: Setter not found: 'dynamic'.
//     dynamic--;
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:59:9: Error: Setter not found: 'dynamic'.
//     use(dynamic--);
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:60:5: Error: Setter not found: 'T'.
//     T--;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:61:9: Error: Setter not found: 'T'.
//     use(T--);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:62:5: Error: Setter not found: 'Func'.
//     Func--;
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:63:9: Error: Setter not found: 'Func'.
//     use(Func--);
//         ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:65:7: Error: Setter not found: 'C'.
//     --C;
//       ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:66:11: Error: Setter not found: 'C'.
//     use(--C);
//           ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:67:7: Error: Setter not found: 'dynamic'.
//     --dynamic;
//       ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:68:11: Error: Setter not found: 'dynamic'.
//     use(--dynamic);
//           ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:69:7: Error: Setter not found: 'T'.
//     --T;
//       ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:70:11: Error: Setter not found: 'T'.
//     use(--T);
//           ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:71:7: Error: Setter not found: 'Func'.
//     --Func;
//       ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:72:11: Error: Setter not found: 'Func'.
//     use(--Func);
//           ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:74:5: Error: Setter not found: 'C'.
//     C ??= 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:75:9: Error: Setter not found: 'C'.
//     use(C ??= 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:76:5: Error: Setter not found: 'dynamic'.
//     dynamic ??= 42;
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:77:9: Error: Setter not found: 'dynamic'.
//     use(dynamic ??= 42);
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:78:5: Error: Setter not found: 'T'.
//     T ??= 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:79:9: Error: Setter not found: 'T'.
//     use(T ??= 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:80:5: Error: Setter not found: 'Func'.
//     Func ??= 42;
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:81:9: Error: Setter not found: 'Func'.
//     use(Func ??= 42);
//         ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:83:5: Error: Setter not found: 'C'.
//     C += 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:84:9: Error: Setter not found: 'C'.
//     use(C += 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:85:5: Error: Setter not found: 'dynamic'.
//     dynamic += 42;
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:86:9: Error: Setter not found: 'dynamic'.
//     use(dynamic += 42);
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:87:5: Error: Setter not found: 'T'.
//     T += 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:88:9: Error: Setter not found: 'T'.
//     use(T += 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:89:5: Error: Setter not found: 'Func'.
//     Func += 42;
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:90:9: Error: Setter not found: 'Func'.
//     use(Func += 42);
//         ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:92:5: Error: Setter not found: 'C'.
//     C -= 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:93:9: Error: Setter not found: 'C'.
//     use(C -= 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:94:5: Error: Setter not found: 'dynamic'.
//     dynamic -= 42;
//     ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:95:9: Error: Setter not found: 'dynamic'.
//     use(dynamic -= 42);
//         ^^^^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:96:5: Error: Setter not found: 'T'.
//     T -= 42;
//     ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:97:9: Error: Setter not found: 'T'.
//     use(T -= 42);
//         ^
//
// pkg/front_end/testcases/rasta/type_literals.dart:98:5: Error: Setter not found: 'Func'.
//     Func -= 42;
//     ^^^^
//
// pkg/front_end/testcases/rasta/type_literals.dart:99:9: Error: Setter not found: 'Func'.
//     use(Func -= 42);
//         ^^^^
//
import self as self;
import "dart:core" as core;

typedef Func = () →* void;
class C<T extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T*>*
    : super core::Object::•()
    ;
  method test() → dynamic {
    self::C<dynamic>*;
    self::use(self::C<dynamic>*);
    dynamic;
    self::use(dynamic);
    self::C::T*;
    self::use(self::C::T*);
    () →* void;
    self::use(() →* void);
    new self::C::•<dynamic>();
    self::use(new self::C::•<dynamic>());
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:22:5: Error: Method not found: 'dynamic'.
    dynamic();
    ^^^^^^^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:23:9: Error: Method not found: 'dynamic'.
    use(dynamic());
        ^^^^^^^");
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:24:5: Error: Method not found: 'T'.
    T();
    ^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:25:9: Error: Method not found: 'T'.
    use(T());
        ^");
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:26:5: Error: Method not found: 'Func'.
    Func();
    ^^^^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:27:9: Error: Method not found: 'Func'.
    use(Func());
        ^^^^");
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:29:5: Error: Setter not found: 'C'.
    C = 42;
    ^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:30:9: Error: Setter not found: 'C'.
    use(C = 42);
        ^");
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:31:5: Error: Setter not found: 'dynamic'.
    dynamic = 42;
    ^^^^^^^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:32:9: Error: Setter not found: 'dynamic'.
    use(dynamic = 42);
        ^^^^^^^");
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:33:5: Error: Setter not found: 'T'.
    T = 42;
    ^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:34:9: Error: Setter not found: 'T'.
    use(T = 42);
        ^");
    invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:35:5: Error: Setter not found: 'Func'.
    Func = 42;
    ^^^^";
    self::use(invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:36:9: Error: Setter not found: 'Func'.
    use(Func = 42);
        ^^^^");
    let final dynamic #t1 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:38:5: Error: Setter not found: 'C'.
    C++;
    ^";
    self::use(let final dynamic #t2 = self::C<dynamic>* in let final dynamic #t3 = #t2 in let final dynamic #t4 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:39:9: Error: Setter not found: 'C'.
    use(C++);
        ^" in #t3);
    let final dynamic #t5 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:40:5: Error: Setter not found: 'dynamic'.
    dynamic++;
    ^^^^^^^";
    self::use(let final dynamic #t6 = dynamic in let final dynamic #t7 = #t6 in let final dynamic #t8 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:41:9: Error: Setter not found: 'dynamic'.
    use(dynamic++);
        ^^^^^^^" in #t7);
    let final dynamic #t9 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:42:5: Error: Setter not found: 'T'.
    T++;
    ^";
    self::use(let final dynamic #t10 = self::C::T* in let final dynamic #t11 = #t10 in let final dynamic #t12 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:43:9: Error: Setter not found: 'T'.
    use(T++);
        ^" in #t11);
    let final dynamic #t13 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:44:5: Error: Setter not found: 'Func'.
    Func++;
    ^^^^";
    self::use(let final dynamic #t14 = () →* void in let final dynamic #t15 = #t14 in let final dynamic #t16 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:45:9: Error: Setter not found: 'Func'.
    use(Func++);
        ^^^^" in #t15);
    let final dynamic #t17 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:47:7: Error: Setter not found: 'C'.
    ++C;
      ^";
    self::use(let final dynamic #t18 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:48:11: Error: Setter not found: 'C'.
    use(++C);
          ^");
    let final dynamic #t19 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:49:7: Error: Setter not found: 'dynamic'.
    ++dynamic;
      ^^^^^^^";
    self::use(let final dynamic #t20 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:50:11: Error: Setter not found: 'dynamic'.
    use(++dynamic);
          ^^^^^^^");
    let final dynamic #t21 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:51:7: Error: Setter not found: 'T'.
    ++T;
      ^";
    self::use(let final dynamic #t22 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:52:11: Error: Setter not found: 'T'.
    use(++T);
          ^");
    let final dynamic #t23 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:53:7: Error: Setter not found: 'Func'.
    ++Func;
      ^^^^";
    self::use(let final dynamic #t24 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:54:11: Error: Setter not found: 'Func'.
    use(++Func);
          ^^^^");
    let final dynamic #t25 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:56:5: Error: Setter not found: 'C'.
    C--;
    ^";
    self::use(let final dynamic #t26 = self::C<dynamic>* in let final dynamic #t27 = #t26 in let final dynamic #t28 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:57:9: Error: Setter not found: 'C'.
    use(C--);
        ^" in #t27);
    let final dynamic #t29 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:58:5: Error: Setter not found: 'dynamic'.
    dynamic--;
    ^^^^^^^";
    self::use(let final dynamic #t30 = dynamic in let final dynamic #t31 = #t30 in let final dynamic #t32 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:59:9: Error: Setter not found: 'dynamic'.
    use(dynamic--);
        ^^^^^^^" in #t31);
    let final dynamic #t33 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:60:5: Error: Setter not found: 'T'.
    T--;
    ^";
    self::use(let final dynamic #t34 = self::C::T* in let final dynamic #t35 = #t34 in let final dynamic #t36 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:61:9: Error: Setter not found: 'T'.
    use(T--);
        ^" in #t35);
    let final dynamic #t37 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:62:5: Error: Setter not found: 'Func'.
    Func--;
    ^^^^";
    self::use(let final dynamic #t38 = () →* void in let final dynamic #t39 = #t38 in let final dynamic #t40 = invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:63:9: Error: Setter not found: 'Func'.
    use(Func--);
        ^^^^" in #t39);
    let final dynamic #t41 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:65:7: Error: Setter not found: 'C'.
    --C;
      ^";
    self::use(let final dynamic #t42 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:66:11: Error: Setter not found: 'C'.
    use(--C);
          ^");
    let final dynamic #t43 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:67:7: Error: Setter not found: 'dynamic'.
    --dynamic;
      ^^^^^^^";
    self::use(let final dynamic #t44 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:68:11: Error: Setter not found: 'dynamic'.
    use(--dynamic);
          ^^^^^^^");
    let final dynamic #t45 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:69:7: Error: Setter not found: 'T'.
    --T;
      ^";
    self::use(let final dynamic #t46 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:70:11: Error: Setter not found: 'T'.
    use(--T);
          ^");
    let final dynamic #t47 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:71:7: Error: Setter not found: 'Func'.
    --Func;
      ^^^^";
    self::use(let final dynamic #t48 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:72:11: Error: Setter not found: 'Func'.
    use(--Func);
          ^^^^");
    let final dynamic #t49 = self::C<dynamic>* in #t49.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:74:5: Error: Setter not found: 'C'.
    C ??= 42;
    ^" : null;
    self::use(let final dynamic #t50 = self::C<dynamic>* in let final dynamic #t51 = #t50 in #t51.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:75:9: Error: Setter not found: 'C'.
    use(C ??= 42);
        ^" : #t51);
    let final dynamic #t52 = dynamic in #t52.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:76:5: Error: Setter not found: 'dynamic'.
    dynamic ??= 42;
    ^^^^^^^" : null;
    self::use(let final dynamic #t53 = dynamic in let final dynamic #t54 = #t53 in #t54.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:77:9: Error: Setter not found: 'dynamic'.
    use(dynamic ??= 42);
        ^^^^^^^" : #t54);
    let final dynamic #t55 = self::C::T* in #t55.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:78:5: Error: Setter not found: 'T'.
    T ??= 42;
    ^" : null;
    self::use(let final dynamic #t56 = self::C::T* in let final dynamic #t57 = #t56 in #t57.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:79:9: Error: Setter not found: 'T'.
    use(T ??= 42);
        ^" : #t57);
    let final dynamic #t58 = () →* void in #t58.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:80:5: Error: Setter not found: 'Func'.
    Func ??= 42;
    ^^^^" : null;
    self::use(let final dynamic #t59 = () →* void in let final dynamic #t60 = #t59 in #t60.==(null) ? invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:81:9: Error: Setter not found: 'Func'.
    use(Func ??= 42);
        ^^^^" : #t60);
    let final dynamic #t61 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:83:5: Error: Setter not found: 'C'.
    C += 42;
    ^";
    self::use(let final dynamic #t62 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:84:9: Error: Setter not found: 'C'.
    use(C += 42);
        ^");
    let final dynamic #t63 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:85:5: Error: Setter not found: 'dynamic'.
    dynamic += 42;
    ^^^^^^^";
    self::use(let final dynamic #t64 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:86:9: Error: Setter not found: 'dynamic'.
    use(dynamic += 42);
        ^^^^^^^");
    let final dynamic #t65 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:87:5: Error: Setter not found: 'T'.
    T += 42;
    ^";
    self::use(let final dynamic #t66 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:88:9: Error: Setter not found: 'T'.
    use(T += 42);
        ^");
    let final dynamic #t67 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:89:5: Error: Setter not found: 'Func'.
    Func += 42;
    ^^^^";
    self::use(let final dynamic #t68 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:90:9: Error: Setter not found: 'Func'.
    use(Func += 42);
        ^^^^");
    let final dynamic #t69 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:92:5: Error: Setter not found: 'C'.
    C -= 42;
    ^";
    self::use(let final dynamic #t70 = self::C<dynamic>* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:93:9: Error: Setter not found: 'C'.
    use(C -= 42);
        ^");
    let final dynamic #t71 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:94:5: Error: Setter not found: 'dynamic'.
    dynamic -= 42;
    ^^^^^^^";
    self::use(let final dynamic #t72 = dynamic in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:95:9: Error: Setter not found: 'dynamic'.
    use(dynamic -= 42);
        ^^^^^^^");
    let final dynamic #t73 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:96:5: Error: Setter not found: 'T'.
    T -= 42;
    ^";
    self::use(let final dynamic #t74 = self::C::T* in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:97:9: Error: Setter not found: 'T'.
    use(T -= 42);
        ^");
    let final dynamic #t75 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:98:5: Error: Setter not found: 'Func'.
    Func -= 42;
    ^^^^";
    self::use(let final dynamic #t76 = () →* void in invalid-expression "pkg/front_end/testcases/rasta/type_literals.dart:99:9: Error: Setter not found: 'Func'.
    use(Func -= 42);
        ^^^^");
  }
}
static method use(dynamic x) → dynamic {
  if(x.{core::Object::==}(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}))
    throw "Shouldn't happen";
}
static method main() → dynamic {
  new self::C::•<dynamic>().{self::C::test}();
}
