private boolean isAwaitOnGeneratorBasedCoroutine(@NotNull String name, @NotNull PsiReference reference, @NotNull PyClass cls) {
    if (PyNames.DUNDER_AWAIT.equals(name) &&
        reference instanceof PyOperatorReference &&
        PyTypingTypeProvider.GENERATOR.equals(cls.getQualifiedName())) {
      final PyExpression receiver = ((PyOperatorReference)reference).getReceiver();

      if (receiver instanceof PyCallExpression) {
        return PyKnownDecoratorUtil.isResolvedToGeneratorBasedCoroutine((PyCallExpression)receiver, getResolveContext(), myTypeEvalContext);
      }
    }

    return false;
  }
private boolean isAwaitOnGeneratorBasedCoroutine(@NotNull String name, @NotNull PsiReference reference, @NotNull PyClass cls)