@Nullable
  @Override
  default PyAstAnnotation getAnnotation() {
    PsiElement topTarget = this;
    while (topTarget.getParent() instanceof PyAstParenthesizedExpression) {
      topTarget = topTarget.getParent();
    }
    final PsiElement parent = topTarget.getParent();
    if (parent != null) {
      final PyAstAssignmentStatement assignment = ObjectUtils.tryCast(parent, PyAstAssignmentStatement.class);
      if (assignment != null) {
        final PyAstExpression[] targets = assignment.getRawTargets();
        if (targets.length == 1 && targets[0] == topTarget) {
          return assignment.getAnnotation();
        }
      }
      else if (parent instanceof PyAstTypeDeclarationStatement) {
        return ((PyAstTypeDeclarationStatement)parent).getAnnotation();
      }
    }
    return null;
  }
@Nullable
  @Override
  default PyAstAnnotation getAnnotation()