library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:31:43: Error: The argument type 'Invocation' can't be assigned to the parameter type 'CustomInvocation'.
//  - 'Invocation' is from 'dart:core'.
//  - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
//   String noSuchMethod1b = c1.noSuchMethod(invocation); // error
//                                           ^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:34:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
//  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
//   c1 == ''; // error
//         ^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:42:32: Error: A value of type 'Type' can't be assigned to a variable of type 'CustomType'.
//  - 'Type' is from 'dart:core'.
//  - 'CustomType' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
//   CustomType runtimeType2 = c2.runtimeType; // error
//                                ^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:44:17: Error: 'runtimeType' isn't a function or method and can't be invoked.
//   c2.runtimeType(); // error
//                 ^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:47:10: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'String Function(CustomInvocation)'.
//  - 'Invocation' is from 'dart:core'.
//  - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
//       c2.noSuchMethod; // error
//          ^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:56:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
//  - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
//   c2 == ''; // ok or error?
//         ^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:59:53: Error: A value of type 'String Function()' can't be assigned to a variable of type 'String Function({Object o})'.
//  - 'Object' is from 'dart:core'.
//   String Function({Object o}) toStringTearOff2 = c2.toString; // error
//                                                     ^
//
// pkg/front_end/testcases/nnbd/nullable_object_access.dart:62:15: Error: No named parameter with the name 'o'.
//   c2.toString(o: c1); // error
//               ^
//
import self as self;
import "dart:core" as core;

abstract class CustomType extends core::Object implements core::Type {
  synthetic constructor •() → self::CustomType
    : super core::Object::•()
    ;
  method call() → void {}
}
abstract class CustomInvocation extends core::Object implements core::Invocation {
  synthetic constructor •() → self::CustomInvocation
    : super core::Object::•()
    ;
}
abstract class Class extends core::Object {
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
  abstract get runtimeType() → self::CustomType;
  forwarding-stub forwarding-semi-stub method /* signature-type: (self::CustomInvocation) → core::String */ noSuchMethod(covariant-by-declaration core::Invocation invocation) → core::String
    return super.{core::Object::noSuchMethod}(invocation);
  forwarding-stub forwarding-semi-stub operator /* signature-type: (self::Class) → core::bool */ ==(covariant-by-declaration core::Object o) → core::bool
    return super.{core::Object::==}(o);
  abstract method toString({core::Object o = #C1}) → core::String;
}
static method main() → dynamic {}
static method test(self::Class c1, self::Class? c2, core::Invocation invocation, self::CustomInvocation customInvocation) → void {
  self::CustomType runtimeType1 = c1.{self::Class::runtimeType}{self::CustomType};
  self::CustomType runtimeTypeVariable1 = c1.{self::Class::runtimeType}{self::CustomType};
  c1.{self::Class::runtimeType}{self::CustomType}.{self::CustomType::call}(){() → void};
  (self::CustomInvocation) → core::String noSuchMethodTearOff1 = c1.{self::Class::noSuchMethod}{(self::CustomInvocation) → core::String};
  (self::CustomInvocation) → core::String noSuchMethodTearOffVariable1 = c1.{self::Class::noSuchMethod}{(self::CustomInvocation) → core::String};
  core::String noSuchMethod1a = c1.{self::Class::noSuchMethod}(customInvocation){(self::CustomInvocation) → core::String};
  core::String noSuchMethod1b = c1.{self::Class::noSuchMethod}(invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:31:43: Error: The argument type 'Invocation' can't be assigned to the parameter type 'CustomInvocation'.
 - 'Invocation' is from 'dart:core'.
 - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
  String noSuchMethod1b = c1.noSuchMethod(invocation); // error
                                          ^" in invocation as{TypeError} self::CustomInvocation){(self::CustomInvocation) → core::String};
  core::String noSuchMethodVariable1 = c1.{self::Class::noSuchMethod}(customInvocation){(self::CustomInvocation) → core::String};
  c1 =={self::Class::==}{(self::Class) → core::bool} invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:34:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
 - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
  c1 == ''; // error
        ^" in "" as{TypeError} self::Class?;
  c1 =={self::Class::==}{(self::Class) → core::bool} c2;
  ({o: core::Object}) → core::String toStringTearOff1 = c1.{self::Class::toString}{({o: core::Object}) → core::String};
  ({o: core::Object}) → core::String toStringTearOffVariable1 = c1.{self::Class::toString}{({o: core::Object}) → core::String};
  c1.{self::Class::toString}(o: c1){({o: core::Object}) → core::String};
  self::CustomType runtimeType2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:42:32: Error: A value of type 'Type' can't be assigned to a variable of type 'CustomType'.
 - 'Type' is from 'dart:core'.
 - 'CustomType' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
  CustomType runtimeType2 = c2.runtimeType; // error
                               ^" in c2.{core::Object::runtimeType}{<object>}.{core::Type} as{TypeError} self::CustomType;
  core::Type runtimeTypeVariable2 = c2.{core::Object::runtimeType}{<object>}.{core::Type};
  invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:44:17: Error: 'runtimeType' isn't a function or method and can't be invoked.
  c2.runtimeType(); // error
                ^^^^^^^^^^^" in c2.{core::Object::runtimeType}{<object>}.{core::Type}{<unresolved>}.call();
  (self::CustomInvocation) → core::String noSuchMethodTearOff2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:47:10: Error: A value of type 'dynamic Function(Invocation)' can't be assigned to a variable of type 'String Function(CustomInvocation)'.
 - 'Invocation' is from 'dart:core'.
 - 'CustomInvocation' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
      c2.noSuchMethod; // error
         ^" in c2.{core::Object::noSuchMethod}{<object>}.{(core::Invocation) → dynamic} as{TypeError} (self::CustomInvocation) → core::String;
  (core::Invocation) → dynamic noSuchMethodTearOffVariable2 = c2.{core::Object::noSuchMethod}{<object>}.{(core::Invocation) → dynamic};
  core::int noSuchMethod2 = c2.{core::Object::noSuchMethod}{<object>}.(invocation){(core::Invocation) → dynamic} as{TypeError,ForDynamic} core::int;
  dynamic noSuchMethodVariable2 = c2.{core::Object::noSuchMethod}{<object>}.(invocation){(core::Invocation) → dynamic};
  c2 =={self::Class::==}{(self::Class) → core::bool} invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:56:9: Error: The argument type 'String' can't be assigned to the parameter type 'Class?'.
 - 'Class' is from 'pkg/front_end/testcases/nnbd/nullable_object_access.dart'.
  c2 == ''; // ok or error?
        ^" in "" as{TypeError} self::Class?;
  c2 =={self::Class::==}{(self::Class) → core::bool} c1;
  ({o: core::Object}) → core::String toStringTearOff2 = invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:59:53: Error: A value of type 'String Function()' can't be assigned to a variable of type 'String Function({Object o})'.
 - 'Object' is from 'dart:core'.
  String Function({Object o}) toStringTearOff2 = c2.toString; // error
                                                    ^" in c2.{core::Object::toString}{<object>}.{() → core::String} as{TypeError} ({o: core::Object}) → core::String;
  () → core::String toStringTearOffVariable2 = c2.{core::Object::toString}{<object>}.{() → core::String};
  invalid-expression "pkg/front_end/testcases/nnbd/nullable_object_access.dart:62:15: Error: No named parameter with the name 'o'.
  c2.toString(o: c1); // error
              ^" in c2.{core::Object::toString}{<inapplicable>}.(o: c1){({o: invalid-type}) → invalid-type};
}

constants  {
  #C1 = null
}
