PyDecoratorStub (@NotNull PyDecorator psi, StubElement parentStub) { PyExpression[] arguments = psi.getArguments(); List<String> positionalArguments = new ArrayList<>(); Map<String, String> namedArguments = new HashMap<>(); for (PyExpression argument : arguments) { if (argument instanceof PyKeywordArgument keywordArgument) { String keyword = keywordArgument.getKeyword(); String value = evaluateArgumentValue(keywordArgument); if (keyword != null && value != null) { namedArguments.put(keyword, value); } } else { String value = evaluateArgumentValue(argument); positionalArguments.add(value); } } return new PyDecoratorStubImpl(psi.getQualifiedName(), psi.hasArgumentList(), parentStub, ContainerUtil.unmodifiableOrEmptyList( positionalArguments), ContainerUtil.unmodifiableOrEmptyMap(namedArguments)); }