@Override
  public PsiElement @NotNull [] getElementsToSurround(PsiFile file, int startOffset, int endOffset) {
    PsiElement firstElement = file.findElementAt(startOffset);
    PsiElement lastElement = file.findElementAt(endOffset - 1);

    // Extend selection beyond possible delimiters
    while (firstElement != null &&
           (firstElement instanceof PsiWhiteSpace || firstElement.getNode().getElementType() == JsonElementTypes.COMMA)) {
      firstElement = firstElement.getNextSibling();
    }
    while (lastElement != null &&
           (lastElement instanceof PsiWhiteSpace || lastElement.getNode().getElementType() == JsonElementTypes.COMMA)) {
      lastElement = lastElement.getPrevSibling();
    }
    if (firstElement != null) {
      startOffset = firstElement.getTextRange().getStartOffset();
    }
    if (lastElement != null) {
      endOffset = lastElement.getTextRange().getEndOffset();
    }

    final JsonProperty property = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JsonProperty.class);
    if (property != null) {
      return collectElements(endOffset, property, JsonProperty.class);
    }

    final JsonValue value = PsiTreeUtil.findElementOfClassAtRange(file, startOffset, endOffset, JsonValue.class);
    if (value != null) {
      return collectElements(endOffset, value, JsonValue.class);
    }
    return PsiElement.EMPTY_ARRAY;
  }
@Override
  public PsiElement @NotNull [] getElementsToSurround(PsiFile file, int startOffset, int endOffset)