blob: f4eb99e6f8f68fbe8068220f2b2166869b2b0ddc [file] [log] [blame]
library;
//
// Problems in library:
//
// pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart:69:7: Error: The non-abstract class 'SubClassImplements2' is missing implementations for these members:
// - SuperClass.accessibleMethod
// Try to either
// - provide an implementation,
// - inherit an implementation from a superclass or mixin,
// - mark the class as abstract, or
// - provide a 'noSuchMethod' implementation.
//
// class SubClassImplements2 implements SuperClass, NoSuchMethodClass {}
// ^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm_lib.dart:9:8: Context: 'SuperClass.accessibleMethod' is defined here.
// void accessibleMethod() {}
// ^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart:75:7: Error: The non-abstract class 'SubSubClassImplements2' is missing implementations for these members:
// - SuperClass.accessibleMethod
// Try to either
// - provide an implementation,
// - inherit an implementation from a superclass or mixin,
// - mark the class as abstract, or
// - provide a 'noSuchMethod' implementation.
//
// class SubSubClassImplements2 extends SubClassImplements2 {}
// ^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm_lib.dart:9:8: Context: 'SuperClass.accessibleMethod' is defined here.
// void accessibleMethod() {}
// ^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm.dart:91:7: Error: The non-abstract class 'SubAbstractSubClassImplements2' is missing implementations for these members:
// - SuperClass.accessibleMethod
// Try to either
// - provide an implementation,
// - inherit an implementation from a superclass or mixin,
// - mark the class as abstract, or
// - provide a 'noSuchMethod' implementation.
//
// class SubAbstractSubClassImplements2 extends AbstractSubClassImplements2 {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// pkg/front_end/testcases/no_such_method_forwarders/access_concrete_nsm_lib.dart:9:8: Context: 'SuperClass.accessibleMethod' is defined here.
// void accessibleMethod() {}
// ^^^^^^^^^^^^^^^^
//
import self as self;
import "access_concrete_nsm_lib.dart" as acc;
import "dart:core" as core;
import "org-dartlang-testcase:///access_concrete_nsm_lib.dart";
class SubClass1 extends acc::SuperClass {
synthetic constructor •() self::SubClass1
: super acc::SuperClass::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
}
class SubClass2 extends core::Object implements acc::SuperClass {
synthetic constructor •() self::SubClass2
: super core::Object::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
no-such-method-forwarder method accessibleMethod() void
return this.{self::SubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
}
abstract class _SubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClass3&Object&SuperClass
: super core::Object::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
class SubClass3 extends self::_SubClass3&Object&SuperClass {
synthetic constructor •() self::SubClass3
: super self::_SubClass3&Object&SuperClass::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
}
class SubSubClass1 extends self::SubClass1 {
synthetic constructor •() self::SubSubClass1
: super self::SubClass1::•()
;
}
class SubSubClass2 extends self::SubClass2 {
synthetic constructor •() self::SubSubClass2
: super self::SubClass2::•()
;
}
class SubSubClass3 extends self::SubClass3 {
synthetic constructor •() self::SubSubClass3
: super self::SubClass3::•()
;
}
class SubSubClassOverride1 extends self::SubClass1 {
synthetic constructor •() self::SubSubClassOverride1
: super self::SubClass1::•()
;
abstract method noSuchMethod(core::Invocation invocation) dynamic;
}
class SubSubClassOverride2 extends self::SubClass2 {
synthetic constructor •() self::SubSubClassOverride2
: super self::SubClass2::•()
;
abstract method noSuchMethod(core::Invocation invocation) dynamic;
}
class SubSubClassOverride3 extends self::SubClass3 {
synthetic constructor •() self::SubSubClassOverride3
: super self::SubClass3::•()
;
abstract method noSuchMethod(core::Invocation invocation) dynamic;
}
abstract class AbstractSubClass1 extends acc::SuperClass {
synthetic constructor •() self::AbstractSubClass1
: super acc::SuperClass::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
}
abstract class AbstractSubClass2 extends core::Object implements acc::SuperClass {
synthetic constructor •() self::AbstractSubClass2
: super core::Object::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
}
abstract class _AbstractSubClass3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClass3&Object&SuperClass
: super core::Object::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
abstract class AbstractSubClass3 extends self::_AbstractSubClass3&Object&SuperClass {
synthetic constructor •() self::AbstractSubClass3
: super self::_AbstractSubClass3&Object&SuperClass::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
}
class SubAbstractSubClass1 extends self::AbstractSubClass1 {
synthetic constructor •() self::SubAbstractSubClass1
: super self::AbstractSubClass1::•()
;
}
class SubAbstractSubClass2 extends self::AbstractSubClass2 {
synthetic constructor •() self::SubAbstractSubClass2
: super self::AbstractSubClass2::•()
;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
no-such-method-forwarder method accessibleMethod() void
return this.{self::AbstractSubClass2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
}
class SubAbstractSubClass3 extends self::AbstractSubClass3 {
synthetic constructor •() self::SubAbstractSubClass3
: super self::AbstractSubClass3::•()
;
}
class SubAbstractSubClassOverride1 extends self::AbstractSubClass1 {
synthetic constructor •() self::SubAbstractSubClassOverride1
: super self::AbstractSubClass1::•()
;
abstract method noSuchMethod(core::Invocation invocation) dynamic;
}
class SubAbstractSubClassOverride2 extends self::AbstractSubClass2 {
synthetic constructor •() self::SubAbstractSubClassOverride2
: super self::AbstractSubClass2::•()
;
abstract method noSuchMethod(core::Invocation invocation) dynamic;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
no-such-method-forwarder method accessibleMethod() void
return this.{self::SubAbstractSubClassOverride2::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
}
class SubAbstractSubClassOverride3 extends self::AbstractSubClass3 {
synthetic constructor •() self::SubAbstractSubClassOverride3
: super self::AbstractSubClass3::•()
;
abstract method noSuchMethod(core::Invocation invocation) dynamic;
}
class SubClassImplements1 extends acc::SuperClass implements acc::NoSuchMethodClass {
synthetic constructor •() self::SubClassImplements1
: super acc::SuperClass::•()
;
}
class SubClassImplements2 extends core::Object implements acc::SuperClass, acc::NoSuchMethodClass {
synthetic constructor •() self::SubClassImplements2
: super core::Object::•()
;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
}
abstract class _SubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClassImplements3&Object&SuperClass
: super core::Object::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
class SubClassImplements3 extends self::_SubClassImplements3&Object&SuperClass implements acc::NoSuchMethodClass {
synthetic constructor •() self::SubClassImplements3
: super self::_SubClassImplements3&Object&SuperClass::•()
;
}
class SubSubClassImplements1 extends self::SubClassImplements1 {
synthetic constructor •() self::SubSubClassImplements1
: super self::SubClassImplements1::•()
;
}
class SubSubClassImplements2 extends self::SubClassImplements2 {
synthetic constructor •() self::SubSubClassImplements2
: super self::SubClassImplements2::•()
;
}
class SubSubClassImplements3 extends self::SubClassImplements3 {
synthetic constructor •() self::SubSubClassImplements3
: super self::SubClassImplements3::•()
;
}
abstract class AbstractSubClassImplements1 extends acc::SuperClass implements acc::NoSuchMethodClass {
synthetic constructor •() self::AbstractSubClassImplements1
: super acc::SuperClass::•()
;
}
abstract class AbstractSubClassImplements2 extends core::Object implements acc::SuperClass, acc::NoSuchMethodClass {
synthetic constructor •() self::AbstractSubClassImplements2
: super core::Object::•()
;
}
abstract class _AbstractSubClassImplements3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClassImplements3&Object&SuperClass
: super core::Object::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
abstract class AbstractSubClassImplements3 extends self::_AbstractSubClassImplements3&Object&SuperClass implements acc::NoSuchMethodClass {
synthetic constructor •() self::AbstractSubClassImplements3
: super self::_AbstractSubClassImplements3&Object&SuperClass::•()
;
}
class SubAbstractSubClassImplements1 extends self::AbstractSubClassImplements1 {
synthetic constructor •() self::SubAbstractSubClassImplements1
: super self::AbstractSubClassImplements1::•()
;
}
class SubAbstractSubClassImplements2 extends self::AbstractSubClassImplements2 {
synthetic constructor •() self::SubAbstractSubClassImplements2
: super self::AbstractSubClassImplements2::•()
;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
}
class SubAbstractSubClassImplements3 extends self::AbstractSubClassImplements3 {
synthetic constructor •() self::SubAbstractSubClassImplements3
: super self::AbstractSubClassImplements3::•()
;
}
abstract class _SubClassWith1&SuperClass&NoSuchMethodClass = acc::SuperClass with acc::NoSuchMethodClass /*isAnonymousMixin*/ {
synthetic constructor •() self::_SubClassWith1&SuperClass&NoSuchMethodClass
: super acc::SuperClass::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
class SubClassWith1 extends self::_SubClassWith1&SuperClass&NoSuchMethodClass {
synthetic constructor •() self::SubClassWith1
: super self::_SubClassWith1&SuperClass&NoSuchMethodClass::•()
;
}
abstract class _SubClassWith2&Object&NoSuchMethodClass = core::Object with acc::NoSuchMethodClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClassWith2&Object&NoSuchMethodClass
: super core::Object::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
class SubClassWith2 extends self::_SubClassWith2&Object&NoSuchMethodClass implements acc::SuperClass {
synthetic constructor •() self::SubClassWith2
: super self::_SubClassWith2&Object&NoSuchMethodClass::•()
;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
no-such-method-forwarder method accessibleMethod() void
return this.{self::_SubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
}
abstract class _SubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClassWith3&Object&SuperClass
: super core::Object::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
abstract class _SubClassWith3&Object&SuperClass&NoSuchMethodClass = self::_SubClassWith3&Object&SuperClass with acc::NoSuchMethodClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClassWith3&Object&SuperClass&NoSuchMethodClass
: super self::_SubClassWith3&Object&SuperClass::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
class SubClassWith3 extends self::_SubClassWith3&Object&SuperClass&NoSuchMethodClass {
synthetic constructor •() self::SubClassWith3
: super self::_SubClassWith3&Object&SuperClass&NoSuchMethodClass::•()
;
}
abstract class _SubClassWith4&Object&NoSuchMethodClass = core::Object with acc::NoSuchMethodClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClassWith4&Object&NoSuchMethodClass
: super core::Object::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
abstract class _SubClassWith4&Object&NoSuchMethodClass&SuperClass = self::_SubClassWith4&Object&NoSuchMethodClass with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_SubClassWith4&Object&NoSuchMethodClass&SuperClass
: super self::_SubClassWith4&Object&NoSuchMethodClass::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
class SubClassWith4 extends self::_SubClassWith4&Object&NoSuchMethodClass&SuperClass {
synthetic constructor •() self::SubClassWith4
: super self::_SubClassWith4&Object&NoSuchMethodClass&SuperClass::•()
;
}
class SubSubClassWith1 extends self::SubClassWith1 {
synthetic constructor •() self::SubSubClassWith1
: super self::SubClassWith1::•()
;
}
class SubSubClassWith2 extends self::SubClassWith2 {
synthetic constructor •() self::SubSubClassWith2
: super self::SubClassWith2::•()
;
}
class SubSubClassWith3 extends self::SubClassWith3 {
synthetic constructor •() self::SubSubClassWith3
: super self::SubClassWith3::•()
;
}
class SubSubClassWith4 extends self::SubClassWith4 {
synthetic constructor •() self::SubSubClassWith4
: super self::SubClassWith4::•()
;
}
abstract class _AbstractSubClassWith1&SuperClass&NoSuchMethodClass = acc::SuperClass with acc::NoSuchMethodClass /*isAnonymousMixin*/ {
synthetic constructor •() self::_AbstractSubClassWith1&SuperClass&NoSuchMethodClass
: super acc::SuperClass::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
abstract class AbstractSubClassWith1 extends self::_AbstractSubClassWith1&SuperClass&NoSuchMethodClass {
synthetic constructor •() self::AbstractSubClassWith1
: super self::_AbstractSubClassWith1&SuperClass&NoSuchMethodClass::•()
;
}
abstract class _AbstractSubClassWith2&Object&NoSuchMethodClass = core::Object with acc::NoSuchMethodClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClassWith2&Object&NoSuchMethodClass
: super core::Object::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
abstract class AbstractSubClassWith2 extends self::_AbstractSubClassWith2&Object&NoSuchMethodClass implements acc::SuperClass {
synthetic constructor •() self::AbstractSubClassWith2
: super self::_AbstractSubClassWith2&Object&NoSuchMethodClass::•()
;
}
abstract class _AbstractSubClassWith3&Object&SuperClass = core::Object with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClassWith3&Object&SuperClass
: super core::Object::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
abstract class _AbstractSubClassWith3&Object&SuperClass&NoSuchMethodClass = self::_AbstractSubClassWith3&Object&SuperClass with acc::NoSuchMethodClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClassWith3&Object&SuperClass&NoSuchMethodClass
: super self::_AbstractSubClassWith3&Object&SuperClass::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
abstract class AbstractSubClassWith3 extends self::_AbstractSubClassWith3&Object&SuperClass&NoSuchMethodClass {
synthetic constructor •() self::AbstractSubClassWith3
: super self::_AbstractSubClassWith3&Object&SuperClass&NoSuchMethodClass::•()
;
}
abstract class _AbstractSubClassWith4&Object&NoSuchMethodClass = core::Object with acc::NoSuchMethodClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClassWith4&Object&NoSuchMethodClass
: super core::Object::•()
;
mixin-super-stub method noSuchMethod(core::Invocation invocation) dynamic
return super.{acc::NoSuchMethodClass::noSuchMethod}(invocation);
}
abstract class _AbstractSubClassWith4&Object&NoSuchMethodClass&SuperClass = self::_AbstractSubClassWith4&Object&NoSuchMethodClass with acc::SuperClass /*isAnonymousMixin,hasConstConstructor*/ {
const synthetic constructor •() self::_AbstractSubClassWith4&Object&NoSuchMethodClass&SuperClass
: super self::_AbstractSubClassWith4&Object&NoSuchMethodClass::•()
;
mixin-super-stub method _inaccessibleMethod1() void
return super.{acc::SuperClass::_inaccessibleMethod1}();
mixin-super-stub method accessibleMethod() void
return super.{acc::SuperClass::accessibleMethod}();
}
abstract class AbstractSubClassWith4 extends self::_AbstractSubClassWith4&Object&NoSuchMethodClass&SuperClass {
synthetic constructor •() self::AbstractSubClassWith4
: super self::_AbstractSubClassWith4&Object&NoSuchMethodClass&SuperClass::•()
;
}
class SubAbstractSubClassWith1 extends self::AbstractSubClassWith1 {
synthetic constructor •() self::SubAbstractSubClassWith1
: super self::AbstractSubClassWith1::•()
;
}
class SubAbstractSubClassWith2 extends self::AbstractSubClassWith2 {
synthetic constructor •() self::SubAbstractSubClassWith2
: super self::AbstractSubClassWith2::•()
;
no-such-method-forwarder method _inaccessibleMethod1() void
return throw{for-error-handling} core::NoSuchMethodError::withInvocation(this, new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4)));
no-such-method-forwarder method accessibleMethod() void
return this.{self::_AbstractSubClassWith2&Object&NoSuchMethodClass::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol, dynamic>(#C4))){(core::Invocation) → dynamic};
}
class SubAbstractSubClassWith3 extends self::AbstractSubClassWith3 {
synthetic constructor •() self::SubAbstractSubClassWith3
: super self::AbstractSubClassWith3::•()
;
}
class SubAbstractSubClassWith4 extends self::AbstractSubClassWith4 {
synthetic constructor •() self::SubAbstractSubClassWith4
: super self::AbstractSubClassWith4::•()
;
}
library;
import self as acc;
import "dart:core" as core;
import "org-dartlang-testcase:///access_concrete_nsm.dart";
mixin class SuperClass extends core::Object {
synthetic constructor •() acc::SuperClass
: super core::Object::•()
;
method _inaccessibleMethod1() void {}
method accessibleMethod() void {}
}
mixin class NoSuchMethodClass extends core::Object {
synthetic constructor •() acc::NoSuchMethodClass
: super core::Object::•()
;
method noSuchMethod(core::Invocation invocation) dynamic
return 42;
}
constants {
#C1 = #org-dartlang-testcase:///access_concrete_nsm.dart::_inaccessibleMethod1
#C2 = <core::Type>[]
#C3 = <dynamic>[]
#C4 = <core::Symbol, dynamic>{}
#C5 = #accessibleMethod
}