JsonFile: Json5Syntax.json5
  JsonObject
    PsiElement({)('{')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('foo')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonStringLiteral
        PsiElement(SINGLE_QUOTED_STRING)(''bar'')
    PsiElement(,)(',')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('while')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonBooleanLiteral
        PsiElement(true)('true')
    PsiElement(,)(',')
    PsiWhiteSpace('\n\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('this')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonStringLiteral
        PsiElement(SINGLE_QUOTED_STRING)(''is a \\nmulti-line string'')
    PsiElement(,)(',')
    PsiWhiteSpace('\n\n    ')
    PsiComment(LINE_COMMENT)('// this is an inline comment')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('here')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonStringLiteral
        PsiElement(SINGLE_QUOTED_STRING)(''is another'')
    PsiElement(,)(',')
    PsiWhiteSpace(' ')
    PsiComment(LINE_COMMENT)('// inline comment')
    PsiWhiteSpace('\n\n    ')
    PsiComment(BLOCK_COMMENT)('/* this is a block comment\n       that continues on another line */')
    PsiWhiteSpace('\n\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('hex')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonNumberLiteral
        PsiElement(NUMBER)('0xDEADbeef')
    PsiElement(,)(',')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('half')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonNumberLiteral
        PsiElement(NUMBER)('.5')
    PsiElement(,)(',')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('delta')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonNumberLiteral
        PsiElement(NUMBER)('+10')
    PsiElement(,)(',')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('to')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonNumberLiteral
        PsiElement(NUMBER)('Infinity')
    PsiElement(,)(',')
    PsiWhiteSpace('   ')
    PsiComment(LINE_COMMENT)('// and beyond!')
    PsiWhiteSpace('\n\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('finally')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonStringLiteral
        PsiElement(SINGLE_QUOTED_STRING)(''a trailing comma'')
    PsiElement(,)(',')
    PsiWhiteSpace('\n    ')
    JsonProperty
      JsonReferenceExpression
        PsiElement(IDENTIFIER)('oh')
      PsiElement(:)(':')
      PsiWhiteSpace(' ')
      JsonArray
        PsiElement([)('[')
        PsiWhiteSpace('\n        ')
        JsonStringLiteral
          PsiElement(DOUBLE_QUOTED_STRING)('"we shouldn't forget"')
        PsiElement(,)(',')
        PsiWhiteSpace('\n        ')
        JsonStringLiteral
          PsiElement(SINGLE_QUOTED_STRING)(''arrays can have'')
        PsiElement(,)(',')
        PsiWhiteSpace('\n        ')
        JsonStringLiteral
          PsiElement(SINGLE_QUOTED_STRING)(''trailing commas too'')
        PsiElement(,)(',')
        PsiWhiteSpace('\n    ')
        PsiElement(])(']')
    PsiElement(,)(',')
    PsiWhiteSpace('\n')
    PsiElement(})('}')