library;
//
// Problems in library:
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:31:31: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
//  - 'CallableGetter' is from 'pkg/front_end/testcases/general_nnbd_opt_out/call.dart'.
// Try changing 'call' to a method or explicitly invoke 'call'.
//   var string5 = callableGetter(1);
//                               ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:36:25: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing1 = closure();
//                         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:37:30: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing2 = closure.call();
//                              ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:38:35: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing3 = closure.call.call();
//                                   ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:39:40: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing4 = closure.call.call.call();
//                                        ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:41:26: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing5 = callable();
//                          ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:42:31: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing6 = callable.call();
//                               ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:43:36: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing7 = callable.call.call();
//                                    ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:44:41: Error: Too few positional arguments: 1 required, 0 given.
//   var nothing8 = callable.call.call.call();
//                                         ^
//
// pkg/front_end/testcases/general_nnbd_opt_out/call.dart:46:32: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
//  - 'CallableGetter' is from 'pkg/front_end/testcases/general_nnbd_opt_out/call.dart'.
// Try changing 'call' to a method or explicitly invoke 'call'.
//   var nothing9 = callableGetter();
//                                ^
//
import self as self;
import "dart:core" as core;

class Callable extends core::Object {
  synthetic constructor •() → self::Callable*
    : super core::Object::•()
    ;
  method call(dynamic x) → dynamic {
    return "string";
  }
  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
}
class CallableGetter extends core::Object {
  synthetic constructor •() → self::CallableGetter*
    : super core::Object::•()
    ;
  get call() → dynamic
    return new self::Callable::•();
  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 {
  (dynamic) →* dynamic closure = (dynamic x) → dynamic => x;
  dynamic int1 = closure.call(1);
  dynamic int2 = closure.call(1);
  dynamic int3 = closure.call.call(1);
  dynamic int4 = closure.call.call.call(1);
  self::Callable* callable = new self::Callable::•();
  dynamic string1 = callable.{self::Callable::call}(1);
  dynamic string2 = callable.{self::Callable::call}(1);
  dynamic string3 = callable.{self::Callable::call}.call(1);
  dynamic string4 = callable.{self::Callable::call}.call.call(1);
  self::CallableGetter* callableGetter = new self::CallableGetter::•();
  dynamic string5 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:31:31: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
 - 'CallableGetter' is from 'pkg/front_end/testcases/general_nnbd_opt_out/call.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
  var string5 = callableGetter(1);
                              ^";
  dynamic string6 = let final self::CallableGetter* #t1 = callableGetter in let final core::int* #t2 = 1 in #t1.{self::CallableGetter::call}.call(#t2);
  dynamic string7 = callableGetter.{self::CallableGetter::call}.call(1);
  dynamic string8 = callableGetter.{self::CallableGetter::call}.call.call(1);
  invalid-type nothing1 = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:36:25: Error: Too few positional arguments: 1 required, 0 given.
  var nothing1 = closure();
                        ^" in closure.call();
  invalid-type nothing2 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:37:30: Error: Too few positional arguments: 1 required, 0 given.
  var nothing2 = closure.call();
                             ^" in closure.call();
  invalid-type nothing3 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:38:35: Error: Too few positional arguments: 1 required, 0 given.
  var nothing3 = closure.call.call();
                                  ^" in closure.call.call();
  invalid-type nothing4 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:39:40: Error: Too few positional arguments: 1 required, 0 given.
  var nothing4 = closure.call.call.call();
                                       ^" in closure.call.call.call();
  invalid-type nothing5 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:41:26: Error: Too few positional arguments: 1 required, 0 given.
  var nothing5 = callable();
                         ^" in callable.{self::Callable::call}();
  invalid-type nothing6 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:42:31: Error: Too few positional arguments: 1 required, 0 given.
  var nothing6 = callable.call();
                              ^" in callable.{self::Callable::call}();
  invalid-type nothing7 = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:43:36: Error: Too few positional arguments: 1 required, 0 given.
  var nothing7 = callable.call.call();
                                   ^" in callable.{self::Callable::call}.call();
  invalid-type nothing8 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:44:41: Error: Too few positional arguments: 1 required, 0 given.
  var nothing8 = callable.call.call.call();
                                        ^" in callable.{self::Callable::call}.call.call();
  dynamic nothing9 = invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/call.dart:46:32: Error: Cannot invoke an instance of 'CallableGetter' because it declares 'call' to be something other than a method.
 - 'CallableGetter' is from 'pkg/front_end/testcases/general_nnbd_opt_out/call.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
  var nothing9 = callableGetter();
                               ^";
  dynamic nothing10 = callableGetter.{self::CallableGetter::call}.call();
  dynamic nothing11 = callableGetter.{self::CallableGetter::call}.call();
  dynamic nothing12 = callableGetter.{self::CallableGetter::call}.call.call();
}
