================================================================================
objects/this2
================================================================================

res1 {
  x = 42
}

res2 = (res1) {
  y = (() -> this.x).apply() + 1
}

res3 = (res2) {
  z = (() -> (() -> this.y).apply()).apply() + 1
}

--------------------------------------------------------------------------------

(module
  (classProperty
    (identifier)
    (objectBody
      (objectProperty
        (identifier)
        (intLiteral))))
  (classProperty
    (identifier)
    (objectLiteral
      (parenthesizedExpr
        (variableExpr
          (identifier)))
      (objectBody
        (objectProperty
          (identifier)
          (binaryExpr
            (methodCallExpr
              (parenthesizedExpr
                (functionLiteral
                  (parameterList)
                  (propertyCallExpr
                    (thisExpr)
                    (identifier))))
              (identifier)
              (argumentList))
            (intLiteral))))))
  (classProperty
    (identifier)
    (objectLiteral
      (parenthesizedExpr
        (variableExpr
          (identifier)))
      (objectBody
        (objectProperty
          (identifier)
          (binaryExpr
            (methodCallExpr
              (parenthesizedExpr
                (functionLiteral
                  (parameterList)
                  (methodCallExpr
                    (parenthesizedExpr
                      (functionLiteral
                        (parameterList)
                        (propertyCallExpr
                          (thisExpr)
                          (identifier))))
                    (identifier)
                    (argumentList))))
              (identifier)
              (argumentList))
            (intLiteral)))))))
