from typing import Any

class AClass:
    def a_method(self, foo: Any) -> Any: ...
    @classmethod
    def a_classmethod(cls, bar: Any) -> Any: ...

class AnotherClass: ...

class ClassWithoutSuperClassInHandwritten(AClass):
    """Here, only inherits methods from AClass."""

class SubClassOfAClass(AClass): ...

class SuperWithOverridableMethod:
    def overwritten(self, bar: Any, foo: Any) -> Any: ...

class OverridingMethod(SuperWithOverridableMethod):
    def overwritten(self, bar: Any, foo: Any) -> Any: ...

class SuperWithOverridableClassmethod:
    @classmethod
    def overwritten(cls, bar: Any, foo: Any) -> Any: ...

class OverridingClassmethod(SuperWithOverridableClassmethod):
    @classmethod
    def overwritten(cls, bar: Any, foo: Any) -> Any: ...

class ClassWithInvalidCustomStub:
    def argument_order_wrong(self, foo: Any, bar: Any) -> Any: ...
    def argument_names_wrong(self, foo: Any, bar: Any) -> Any: ...
    def argument_types_wrong(self, foo: int, bar: str) -> Any: ...
    def return_type_less_specific(self, foo: int, bar: str) -> bool: ...
    def return_type_wrong(self, foo: int, bar: str) -> bool: ...
