@Override
    public void visitPyCallExpression(@NotNull PyCallExpression node) {
      if (myDynamic || !myFoundDunderAll) return;

      final PyExpression callee = node.getCallee();
      if (callee instanceof PyQualifiedExpression) {
        final PyExpression qualifier = ((PyQualifiedExpression)callee).getQualifier();
        if (qualifier != null && PyNames.ALL.equals(qualifier.getText())) {
          final String calleeName = callee.getName();
          if (PyNames.APPEND.equals(calleeName)) {
            final PyStringLiteralExpression argument = node.getArgument(0, PyStringLiteralExpression.class);
            if (argument != null) {
              myResult.add(argument.getStringValue());
              return;
            }
          }
          else if (PyNames.EXTEND.equals(calleeName)) {
            final PyExpression argument = node.getArgument(0, PyExpression.class);
            processSubList(getStringListFromValue(argument));
            return;
          }

          myDynamic = true;
        }
      }
    }
@Override
    public void visitPyCallExpression(@NotNull PyCallExpression node)