Could it be related to the bug mentioned in #1987 ? ```python class A: def __init__(self, x: int) -> None: self.x = x # mypy seems perfectly happy with this def __add__(self, other: 'A') -> 'A': return type(self)(self.x + other.x) def __str__(self) -> str: return f'A(x={self.x})' class B(NamedTuple('B', [('x', int)])): # error: Argument 1 of "__add__" incompatible with supertype "tuple" def __add__(self, other: 'B') -> 'B': return type(self)(self.x + other.x) ```