@Override
        protected void addCompletions(@NotNull CompletionParameters parameters,
                                      @NotNull ProcessingContext context,
                                      @NotNull CompletionResultSet result) {
          final PsiElement original = parameters.getOriginalPosition();
          if (original == null) return;

          final PySubscriptionExpression subscription = PsiTreeUtil.getParentOfType(original, PySubscriptionExpression.class);
          if (subscription == null) return;

          final PyExpression operand = subscription.getOperand();
          final DictKeyCompletionResultSet dictCompletion =
            new DictKeyCompletionResultSet(result, subscription.getIndexExpression() instanceof PyStringLiteralExpression);

          if (addCompletionIfOperandIsTypedDict(operand, dictCompletion)) {
            return;
          }
          if (operand instanceof PyReferenceExpression) {
            final PyExpression resolvedElement = PyResolveUtil.fullResolveLocally((PyReferenceExpression)operand);
            if (resolvedElement instanceof PyDictLiteralExpression) {
              addDictLiteralKeys((PyDictLiteralExpression)resolvedElement, dictCompletion);
              addAdditionalKeys(parameters.getOriginalFile(), operand, dictCompletion);
            }
            if (resolvedElement instanceof PyCallExpression) {
              addDictConstructorKeys((PyCallExpression)resolvedElement, dictCompletion);
              addAdditionalKeys(parameters.getOriginalFile(), operand, dictCompletion);
            }
          }
        }
@Override
        protected void addCompletions(@NotNull CompletionParameters parameters,
                                      @NotNull ProcessingContext context,
                                      @NotNull CompletionResultSet result)