A -> UClass (name = A)
invoke -> UMethod (name = invoke)
    this -> USimpleNameReferenceExpression (identifier = this)
invoke -> UMethod (name = invoke)
f -> UParameter (name = f)
Unit -> USimpleNameReferenceExpression (identifier = Unit)
main -> UMethod (name = main)
a -> UParameter (name = a)
A -> USimpleNameReferenceExpression (identifier = A)
    a -> USimpleNameReferenceExpression (identifier = a)
    !! -> USimpleNameReferenceExpression (identifier = !!)
    p -> ULocalVariable (name = p)
    A -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0))
    a -> USimpleNameReferenceExpression (identifier = a)
    !! -> USimpleNameReferenceExpression (identifier = !!)
        p -> UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
            A -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0))
