================================================================================
classes/constraintsLambdaThis
================================================================================

// explicit this
res1: String(List(1).map((it) -> this).single.length == 3) = "abc"
res2: String(List(1).map((it) -> List(2).map((it) -> this)).single.single.length == 3) = "abc"

// implicit property invocation
res3: String(List(1).map((it) -> length).single == 3) = "abc"
res4: String(List(1).map((it) -> List(2).map((it) -> length)).single.single == 3) = "abc"

// implicit function invocation
res5: String(List(1).map((it) -> getClass()).single == String) = "abc"
res6: String(List(1).map((it) -> List(2).map((it) -> getClass())).single.single == String) = "abc"

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

(module
  (lineComment)
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (type
          (qualifiedIdentifier
            (identifier)))
        (binaryExpr
          (propertyCallExpr
            (propertyCallExpr
              (methodCallExpr
                (methodCallExpr
                  (identifier)
                  (argumentList
                    (intLiteral)))
                (identifier)
                (argumentList
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (thisExpr))))
              (identifier))
            (identifier))
          (intLiteral))))
    (slStringLiteral))
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (type
          (qualifiedIdentifier
            (identifier)))
        (binaryExpr
          (propertyCallExpr
            (propertyCallExpr
              (propertyCallExpr
                (methodCallExpr
                  (methodCallExpr
                    (identifier)
                    (argumentList
                      (intLiteral)))
                  (identifier)
                  (argumentList
                    (functionLiteral
                      (parameterList
                        (typedIdentifier
                          (identifier)))
                      (methodCallExpr
                        (methodCallExpr
                          (identifier)
                          (argumentList
                            (intLiteral)))
                        (identifier)
                        (argumentList
                          (functionLiteral
                            (parameterList
                              (typedIdentifier
                                (identifier)))
                            (thisExpr)))))))
                (identifier))
              (identifier))
            (identifier))
          (intLiteral))))
    (slStringLiteral))
  (lineComment)
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (type
          (qualifiedIdentifier
            (identifier)))
        (binaryExpr
          (propertyCallExpr
            (methodCallExpr
              (methodCallExpr
                (identifier)
                (argumentList
                  (intLiteral)))
              (identifier)
              (argumentList
                (functionLiteral
                  (parameterList
                    (typedIdentifier
                      (identifier)))
                  (variableExpr
                    (identifier)))))
            (identifier))
          (intLiteral))))
    (slStringLiteral))
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (type
          (qualifiedIdentifier
            (identifier)))
        (binaryExpr
          (propertyCallExpr
            (propertyCallExpr
              (methodCallExpr
                (methodCallExpr
                  (identifier)
                  (argumentList
                    (intLiteral)))
                (identifier)
                (argumentList
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (methodCallExpr
                      (methodCallExpr
                        (identifier)
                        (argumentList
                          (intLiteral)))
                      (identifier)
                      (argumentList
                        (functionLiteral
                          (parameterList
                            (typedIdentifier
                              (identifier)))
                          (variableExpr
                            (identifier))))))))
              (identifier))
            (identifier))
          (intLiteral))))
    (slStringLiteral))
  (lineComment)
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (type
          (qualifiedIdentifier
            (identifier)))
        (binaryExpr
          (propertyCallExpr
            (methodCallExpr
              (methodCallExpr
                (identifier)
                (argumentList
                  (intLiteral)))
              (identifier)
              (argumentList
                (functionLiteral
                  (parameterList
                    (typedIdentifier
                      (identifier)))
                  (methodCallExpr
                    (identifier)
                    (argumentList)))))
            (identifier))
          (variableExpr
            (identifier)))))
    (slStringLiteral))
  (classProperty
    (identifier)
    (typeAnnotation
      (type
        (type
          (qualifiedIdentifier
            (identifier)))
        (binaryExpr
          (propertyCallExpr
            (propertyCallExpr
              (methodCallExpr
                (methodCallExpr
                  (identifier)
                  (argumentList
                    (intLiteral)))
                (identifier)
                (argumentList
                  (functionLiteral
                    (parameterList
                      (typedIdentifier
                        (identifier)))
                    (methodCallExpr
                      (methodCallExpr
                        (identifier)
                        (argumentList
                          (intLiteral)))
                      (identifier)
                      (argumentList
                        (functionLiteral
                          (parameterList
                            (typedIdentifier
                              (identifier)))
                          (methodCallExpr
                            (identifier)
                            (argumentList))))))))
              (identifier))
            (identifier))
          (variableExpr
            (identifier)))))
    (slStringLiteral)))
