@Nullable
  @Override
  default PsiComment getTypeComment() {
    PsiComment comment = null;
    final PyAstAssignmentStatement assignment = PsiTreeUtil.getParentOfType(this, PyAstAssignmentStatement.class);
    if (assignment != null) {
      final PyAstExpression assignedValue = assignment.getAssignedValue();
      if (assignedValue != null && !PsiTreeUtil.isAncestor(assignedValue, this, false)) {
        comment = ObjectUtils.tryCast(PyPsiUtilsCore.getNextNonWhitespaceSiblingOnSameLine(assignedValue), PsiComment.class);
      }
    }
    else {
      PyAstStatementListContainer forOrWith = null;
      final PyAstForPart forPart = PsiTreeUtil.getParentOfType(this, PyAstForPart.class);
      if (forPart != null && PsiTreeUtil.isAncestor(forPart.getTarget(), this, false)) {
        forOrWith = forPart;
      }
      final PyAstWithItem withPart = PsiTreeUtil.getParentOfType(this, PyAstWithItem.class);
      if (withPart != null && PsiTreeUtil.isAncestor(withPart.getTarget(), this, false)) {
        forOrWith = ObjectUtils.tryCast(withPart.getParent(), PyAstWithStatement.class);
      }

      if (forOrWith != null) {
        comment = PyUtilCore.getCommentOnHeaderLine(forOrWith);
      }
    }
    return comment != null && PyUtilCore.getTypeCommentValue(comment.getText()) != null ? comment : null;
  }
@Nullable
  @Override
  default PsiComment getTypeComment()