type: program
id: 0
range: 1:1 - 12:1
dataflow_sources:
    - 1
    - 6
    - 17
    - 25
    - 33
    - 41
    - 49
children:
    - type: expression_statement
      id: 1
      range: 1:1 - 1:5
      children:
        - type: string
          id: 2
          range: 1:1 - 1:5
          dataflow_sources:
            - 3
            - 4
            - 5
          children:
            - type: '"""'
              id: 3
              range: 1:1 - 1:2
            - type: string_fragment
              id: 4
              range: 1:2 - 1:4
              content: ab
            - type: '"""'
              id: 5
              range: 1:4 - 1:5
    - type: expression_statement
      id: 6
      range: 3:1 - 3:10
      children:
        - type: binary_expression
          id: 7
          range: 3:1 - 3:10
          dataflow_sources:
            - 8
            - 12
            - 13
          children:
            - type: string
              id: 8
              range: 3:1 - 3:4
              dataflow_sources:
                - 9
                - 10
                - 11
              children:
                - type: '"""'
                  id: 9
                  range: 3:1 - 3:2
                - type: string_fragment
                  id: 10
                  range: 3:2 - 3:3
                  content: a
                - type: '"""'
                  id: 11
                  range: 3:3 - 3:4
            - type: '"+"'
              id: 12
              range: 3:5 - 3:6
            - type: string
              id: 13
              range: 3:7 - 3:10
              dataflow_sources:
                - 14
                - 15
                - 16
              children:
                - type: '"""'
                  id: 14
                  range: 3:7 - 3:8
                - type: string_fragment
                  id: 15
                  range: 3:8 - 3:9
                  content: b
                - type: '"""'
                  id: 16
                  range: 3:9 - 3:10
    - type: expression_statement
      id: 17
      range: 5:1 - 5:8
      children:
        - type: assignment_expression
          id: 18
          range: 5:1 - 5:8
          alias_of:
            - 21
          queries:
            - 1
          children:
            - type: identifier
              id: 19
              range: 5:1 - 5:2
              content: x
            - type: '"="'
              id: 20
              range: 5:3 - 5:4
            - type: string
              id: 21
              range: 5:5 - 5:8
              dataflow_sources:
                - 22
                - 23
                - 24
              children:
                - type: '"""'
                  id: 22
                  range: 5:5 - 5:6
                - type: string_fragment
                  id: 23
                  range: 5:6 - 5:7
                  content: a
                - type: '"""'
                  id: 24
                  range: 5:7 - 5:8
    - type: expression_statement
      id: 25
      range: 6:1 - 6:9
      children:
        - type: template_string
          id: 26
          range: 6:1 - 6:9
          dataflow_sources:
            - 27
            - 28
            - 32
          children:
            - type: '"`"'
              id: 27
              range: 6:1 - 6:2
            - type: template_substitution
              id: 28
              range: 6:2 - 6:6
              dataflow_sources:
                - 29
                - 30
                - 31
              children:
                - type: '"${"'
                  id: 29
                  range: 6:2 - 6:4
                - type: identifier
                  id: 30
                  range: 6:4 - 6:5
                  content: x
                  alias_of:
                    - 18
                - type: '"}"'
                  id: 31
                  range: 6:5 - 6:6
            - type: '"`"'
              id: 32
              range: 6:8 - 6:9
    - type: expression_statement
      id: 33
      range: 8:1 - 8:19
      children:
        - type: string
          id: 34
          range: 8:1 - 8:19
          dataflow_sources:
            - 35
            - 36
            - 37
            - 38
            - 39
            - 40
          children:
            - type: '"""'
              id: 35
              range: 8:1 - 8:2
            - type: string_fragment
              id: 36
              range: 8:2 - 8:7
              content: hello
            - type: escape_sequence
              id: 37
              range: 8:7 - 8:11
              content: \x20
            - type: string_fragment
              id: 38
              range: 8:11 - 8:16
              content: world
            - type: escape_sequence
              id: 39
              range: 8:16 - 8:18
              content: \\
            - type: '"""'
              id: 40
              range: 8:18 - 8:19
    - type: expression_statement
      id: 41
      range: 10:1 - 10:15
      children:
        - type: binary_expression
          id: 42
          range: 10:1 - 10:15
          dataflow_sources:
            - 43
            - 44
            - 45
          children:
            - type: "false"
              id: 43
              range: 10:1 - 10:6
              content: "false"
            - type: '"||"'
              id: 44
              range: 10:7 - 10:9
            - type: string
              id: 45
              range: 10:10 - 10:15
              dataflow_sources:
                - 46
                - 47
                - 48
              children:
                - type: '"""'
                  id: 46
                  range: 10:10 - 10:11
                - type: string_fragment
                  id: 47
                  range: 10:11 - 10:14
                  content: foo
                - type: '"""'
                  id: 48
                  range: 10:14 - 10:15
    - type: expression_statement
      id: 49
      range: 11:1 - 11:15
      children:
        - type: binary_expression
          id: 50
          range: 11:1 - 11:15
          dataflow_sources:
            - 51
            - 55
            - 56
          children:
            - type: string
              id: 51
              range: 11:1 - 11:6
              dataflow_sources:
                - 52
                - 53
                - 54
              children:
                - type: '"""'
                  id: 52
                  range: 11:1 - 11:2
                - type: string_fragment
                  id: 53
                  range: 11:2 - 11:5
                  content: hey
                - type: '"""'
                  id: 54
                  range: 11:5 - 11:6
            - type: '"||"'
              id: 55
              range: 11:7 - 11:9
            - type: string
              id: 56
              range: 11:10 - 11:15
              dataflow_sources:
                - 57
                - 58
                - 59
              children:
                - type: '"""'
                  id: 57
                  range: 11:10 - 11:11
                - type: string_fragment
                  id: 58
                  range: 11:11 - 11:14
                  content: foo
                - type: '"""'
                  id: 59
                  range: 11:14 - 11:15

- node: 2
  content: '"ab"'
  data:
    value: ab
    isliteral: true
- node: 7
  content: '"a" + "b"'
  data:
    value: ab
    isliteral: true
- node: 26
  content: '`${x} b`'
  data:
    value: a b
    isliteral: true
- node: 34
  content: '"hello\x20world\\"'
  data:
    value: hello world\
    isliteral: true
- node: 42
  content: false || "foo"
  data:
    value: foo
    isliteral: true
- node: 50
  content: '"hey" || "foo"'
  data:
    value: hey
    isliteral: true
- node: 50
  content: '"hey" || "foo"'
  data:
    value: foo
    isliteral: true
- node: 4
  content: ab
  data:
    value: ab
    isliteral: true
- node: 8
  content: '"a"'
  data:
    value: a
    isliteral: true
- node: 13
  content: '"b"'
  data:
    value: b
    isliteral: true
- node: 21
  content: '"a"'
  data:
    value: a
    isliteral: true
- node: 36
  content: hello
  data:
    value: hello
    isliteral: true
- node: 37
  content: \x20
  data:
    value: ' '
    isliteral: true
- node: 38
  content: world
  data:
    value: world
    isliteral: true
- node: 39
  content: \\
  data:
    value: \
    isliteral: true
- node: 45
  content: '"foo"'
  data:
    value: foo
    isliteral: true
- node: 51
  content: '"hey"'
  data:
    value: hey
    isliteral: true
- node: 56
  content: '"foo"'
  data:
    value: foo
    isliteral: true
- node: 10
  content: a
  data:
    value: a
    isliteral: true
- node: 15
  content: b
  data:
    value: b
    isliteral: true
- node: 23
  content: a
  data:
    value: a
    isliteral: true
- node: 47
  content: foo
  data:
    value: foo
    isliteral: true
- node: 53
  content: hey
  data:
    value: hey
    isliteral: true
- node: 58
  content: foo
  data:
    value: foo
    isliteral: true

