private @NotNull InsertHandler<LookupElement> getInsertHandler(@NotNull PyElement exported,
                                                                 @NotNull PsiElement position,
                                                                 @NotNull TypeEvalContext typeEvalContext) {
    if (position.getParent() instanceof PyStringLiteralExpression) {
      return getStringLiteralInsertHandler();
    }
    // Some names in typing are defined as functions, this rule needs to have priority
    else if (PyParameterizedTypeInsertHandler.isCompletingParameterizedType(exported, position, typeEvalContext)) {
      return getGenericTypeInsertHandler();
    }
    else if (exported instanceof PyFunction && !(position.getParent().getParent() instanceof PyDecorator)) {
      return getFunctionInsertHandler();
    }
    return getImportingInsertHandler();
  }
private @NotNull InsertHandler<LookupElement> getInsertHandler(@NotNull PyElement exported,
                                                                 @NotNull PsiElement position,
                                                                 @NotNull TypeEvalContext typeEvalContext)