+- CompilationUnit[]
   +- PackageDeclaration[]
   |  +- ModifierList[]
   +- ImportDeclaration[]
   +- ImportDeclaration[]
   +- ImportDeclaration[]
   +- ImportDeclaration[]
   +- ClassDeclaration[@TypeMirror = "org.example.unusedPrivateMethod.NestedLambdasAndMethodCalls"]
   |  +- ModifierList[]
   |  +- ClassBody[]
   |     +- MethodDeclaration[@Name = "main"]
   |     |  +- ModifierList[]
   |     |  +- VoidType[@TypeMirror = "void"]
   |     |  +- FormalParameters[]
   |     |  |  +- FormalParameter[@TypeMirror = "java.lang.String[]"]
   |     |  |     +- ModifierList[]
   |     |  |     +- ArrayType[@TypeMirror = "java.lang.String[]"]
   |     |  |     |  +- ClassType[@TypeMirror = "java.lang.String"]
   |     |  |     |  +- ArrayDimensions[]
   |     |  |     |     +- ArrayTypeDim[]
   |     |  |     +- VariableId[@Name = "args", @TypeMirror = "java.lang.String[]"]
   |     |  +- Block[]
   |     |     +- LocalVariableDeclaration[]
   |     |     |  +- ModifierList[]
   |     |     |  +- ClassType[@TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |     |  +- VariableDeclarator[]
   |     |     |     +- VariableId[@Name = "library", @TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |     |     +- ConstructorCall[@Failed = false, @Function = "org.example.unusedPrivateMethod.Library.new(java.util.Collection<org.example.unusedPrivateMethod.Book>) -> org.example.unusedPrivateMethod.Library", @MethodName = "new", @TypeMirror = "org.example.unusedPrivateMethod.Library", @Unchecked = false, @VarargsCall = false]
   |     |     |        +- ClassType[@TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |     |        +- ArgumentList[]
   |     |     |           +- MethodCall[@Failed = false, @Function = "java.util.Collections.<T> emptySet() -> java.util.Set<org.example.unusedPrivateMethod.Book>", @MethodName = "emptySet", @TypeMirror = "java.util.Set<org.example.unusedPrivateMethod.Book>", @Unchecked = false, @VarargsCall = false]
   |     |     |              +- ArgumentList[]
   |     |     +- LocalVariableDeclaration[]
   |     |     |  +- ModifierList[]
   |     |     |  +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |     |     |  |  +- TypeArguments[]
   |     |     |  |     +- ClassType[@TypeMirror = "java.lang.String"]
   |     |     |  |     +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.lang.String>"]
   |     |     |  |        +- TypeArguments[]
   |     |     |  |           +- ClassType[@TypeMirror = "java.lang.String"]
   |     |     |  |           +- ClassType[@TypeMirror = "java.lang.String"]
   |     |     |  +- VariableDeclarator[]
   |     |     |     +- VariableId[@Name = "map", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |     |     |     +- MethodCall[@Failed = true, @Function = "(*unknown*).(*unknown method*)() -> (*unknown*)", @MethodName = "run", @TypeMirror = "(*unknown*)", @Unchecked = false, @VarargsCall = false]
   |     |     |        +- ConstructorCall[@Failed = true, @Function = "(*unknown*).(*unknown method*)() -> (*unknown*)", @MethodName = "new", @TypeMirror = "*Main", @Unchecked = false, @VarargsCall = false]
   |     |     |        |  +- ClassType[@TypeMirror = "*Main"]
   |     |     |        |  +- ArgumentList[]
   |     |     |        +- ArgumentList[]
   |     |     |           +- VariableAccess[@Name = "library", @TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |     +- ExpressionStatement[]
   |     |        +- MethodCall[@Failed = false, @Function = "java.io.PrintStream.println(java.lang.Object) -> void", @MethodName = "println", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
   |     |           +- FieldAccess[@Name = "out", @TypeMirror = "java.io.PrintStream"]
   |     |           |  +- TypeExpression[@TypeMirror = "java.lang.System"]
   |     |           |     +- ClassType[@TypeMirror = "java.lang.System"]
   |     |           +- ArgumentList[]
   |     |              +- VariableAccess[@Name = "map", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |     +- MethodDeclaration[@Name = "run"]
   |     |  +- ModifierList[]
   |     |  +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |     |  |  +- TypeArguments[]
   |     |  |     +- ClassType[@TypeMirror = "java.lang.String"]
   |     |  |     +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.lang.String>"]
   |     |  |        +- TypeArguments[]
   |     |  |           +- ClassType[@TypeMirror = "java.lang.String"]
   |     |  |           +- ClassType[@TypeMirror = "java.lang.String"]
   |     |  +- FormalParameters[]
   |     |  |  +- FormalParameter[@TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |  |     +- ModifierList[]
   |     |  |     +- ClassType[@TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |  |     +- VariableId[@Name = "library", @TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |  +- Block[]
   |     |     +- ReturnStatement[]
   |     |        +- MethodCall[@Failed = false, @Function = "java.util.Optional<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>.orElse(java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>) -> java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>", @MethodName = "orElse", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>", @Unchecked = false, @VarargsCall = false]
   |     |           +- MethodCall[@Failed = false, @Function = "java.util.stream.Stream<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>.reduce(java.util.function.BinaryOperator<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>) -> java.util.Optional<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>", @MethodName = "reduce", @TypeMirror = "java.util.Optional<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>", @Unchecked = false, @VarargsCall = false]
   |     |           |  +- MethodCall[@Failed = false, @Function = "java.util.stream.Stream<org.example.unusedPrivateMethod.Book>.<R> map(java.util.function.Function<? super org.example.unusedPrivateMethod.Book, ? extends java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>) -> java.util.stream.Stream<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>", @MethodName = "map", @TypeMirror = "java.util.stream.Stream<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |  +- MethodCall[@Failed = false, @Function = "java.util.Collection<org.example.unusedPrivateMethod.Book>.stream() -> java.util.stream.Stream<org.example.unusedPrivateMethod.Book>", @MethodName = "stream", @TypeMirror = "java.util.stream.Stream<org.example.unusedPrivateMethod.Book>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |  |  +- MethodCall[@Failed = false, @Function = "org.example.unusedPrivateMethod.Library.books() -> java.util.Collection<org.example.unusedPrivateMethod.Book>", @MethodName = "books", @TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Book>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |  |  |  +- VariableAccess[@Name = "library", @TypeMirror = "org.example.unusedPrivateMethod.Library"]
   |     |           |  |  |  |  +- ArgumentList[]
   |     |           |  |  |  +- ArgumentList[]
   |     |           |  |  +- ArgumentList[]
   |     |           |  |     +- LambdaExpression[@TypeMirror = "java.util.function.Function<org.example.unusedPrivateMethod.Book, java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>"]
   |     |           |  |        +- LambdaParameterList[]
   |     |           |  |        |  +- LambdaParameter[@TypeMirror = "org.example.unusedPrivateMethod.Book"]
   |     |           |  |        |     +- ModifierList[]
   |     |           |  |        |     +- VariableId[@Name = "book", @TypeMirror = "org.example.unusedPrivateMethod.Book"]
   |     |           |  |        +- MethodCall[@Failed = false, @Function = "java.util.stream.Stream<org.example.unusedPrivateMethod.Lender>.<R, A> collect(java.util.stream.Collector<? super org.example.unusedPrivateMethod.Lender, java.lang.Object, java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>) -> java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>", @MethodName = "collect", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |           +- MethodCall[@Failed = false, @Function = "java.util.Collection<org.example.unusedPrivateMethod.Lender>.stream() -> java.util.stream.Stream<org.example.unusedPrivateMethod.Lender>", @MethodName = "stream", @TypeMirror = "java.util.stream.Stream<org.example.unusedPrivateMethod.Lender>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |           |  +- MethodCall[@Failed = false, @Function = "org.example.unusedPrivateMethod.Book.lenders() -> java.util.Collection<org.example.unusedPrivateMethod.Lender>", @MethodName = "lenders", @TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Lender>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |           |  |  +- VariableAccess[@Name = "book", @TypeMirror = "org.example.unusedPrivateMethod.Book"]
   |     |           |  |           |  |  +- ArgumentList[]
   |     |           |  |           |  +- ArgumentList[]
   |     |           |  |           +- ArgumentList[]
   |     |           |  |              +- MethodCall[@Failed = false, @Function = "java.util.stream.Collectors.<T, K, U> toMap(java.util.function.Function<? super org.example.unusedPrivateMethod.Lender, ? extends java.lang.String>, java.util.function.Function<? super org.example.unusedPrivateMethod.Lender, ? extends java.util.Map<java.lang.String, java.lang.String>>) -> java.util.stream.Collector<org.example.unusedPrivateMethod.Lender, java.lang.Object, java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>", @MethodName = "toMap", @TypeMirror = "java.util.stream.Collector<org.example.unusedPrivateMethod.Lender, java.lang.Object, java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |                 +- TypeExpression[@TypeMirror = "java.util.stream.Collectors"]
   |     |           |  |                 |  +- ClassType[@TypeMirror = "java.util.stream.Collectors"]
   |     |           |  |                 +- ArgumentList[]
   |     |           |  |                    +- MethodReference[@TypeMirror = "java.util.function.Function<org.example.unusedPrivateMethod.Lender, java.lang.String>"]
   |     |           |  |                    |  +- TypeExpression[@TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |     |           |  |                    |     +- ClassType[@TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |     |           |  |                    +- LambdaExpression[@TypeMirror = "java.util.function.Function<org.example.unusedPrivateMethod.Lender, java.util.Map<java.lang.String, java.lang.String>>"]
   |     |           |  |                       +- LambdaParameterList[]
   |     |           |  |                       |  +- LambdaParameter[@TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |     |           |  |                       |     +- ModifierList[]
   |     |           |  |                       |     +- VariableId[@Name = "lender", @TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |     |           |  |                       +- MethodCall[@Failed = false, @Function = "java.util.Map.<K, V> of(java.lang.String, java.lang.String) -> java.util.Map<java.lang.String, java.lang.String>", @MethodName = "of", @TypeMirror = "java.util.Map<java.lang.String, java.lang.String>", @Unchecked = false, @VarargsCall = false]
   |     |           |  |                          +- TypeExpression[@TypeMirror = "java.util.Map"]
   |     |           |  |                          |  +- ClassType[@TypeMirror = "java.util.Map"]
   |     |           |  |                          +- ArgumentList[]
   |     |           |  |                             +- MethodCall[@Failed = false, @Function = "org.example.unusedPrivateMethod.Book.title() -> java.lang.String", @MethodName = "title", @TypeMirror = "java.lang.String", @Unchecked = false, @VarargsCall = false]
   |     |           |  |                             |  +- VariableAccess[@Name = "book", @TypeMirror = "org.example.unusedPrivateMethod.Book"]
   |     |           |  |                             |  +- ArgumentList[]
   |     |           |  |                             +- MethodCall[@Failed = false, @Function = "org.example.unusedPrivateMethod.Lender.status() -> java.lang.String", @MethodName = "status", @TypeMirror = "java.lang.String", @Unchecked = false, @VarargsCall = false]
   |     |           |  |                                +- VariableAccess[@Name = "lender", @TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |     |           |  |                                +- ArgumentList[]
   |     |           |  +- ArgumentList[]
   |     |           |     +- MethodReference[@TypeMirror = "java.util.function.BinaryOperator<java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>>"]
   |     |           |        +- ThisExpression[@TypeMirror = "org.example.unusedPrivateMethod.NestedLambdasAndMethodCalls"]
   |     |           +- ArgumentList[]
   |     |              +- NullLiteral[@TypeMirror = "null"]
   |     +- MethodDeclaration[@Name = "reduceBooksAndLenderStatusByLender"]
   |        +- ModifierList[]
   |        +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        |  +- TypeArguments[]
   |        |     +- ClassType[@TypeMirror = "java.lang.String"]
   |        |     +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.lang.String>"]
   |        |        +- TypeArguments[]
   |        |           +- ClassType[@TypeMirror = "java.lang.String"]
   |        |           +- ClassType[@TypeMirror = "java.lang.String"]
   |        +- FormalParameters[]
   |        |  +- FormalParameter[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        |  |  +- ModifierList[]
   |        |  |  +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        |  |  |  +- TypeArguments[]
   |        |  |  |     +- ClassType[@TypeMirror = "java.lang.String"]
   |        |  |  |     +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.lang.String>"]
   |        |  |  |        +- TypeArguments[]
   |        |  |  |           +- ClassType[@TypeMirror = "java.lang.String"]
   |        |  |  |           +- ClassType[@TypeMirror = "java.lang.String"]
   |        |  |  +- VariableId[@Name = "previousMap", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        |  +- FormalParameter[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        |     +- ModifierList[]
   |        |     +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        |     |  +- TypeArguments[]
   |        |     |     +- ClassType[@TypeMirror = "java.lang.String"]
   |        |     |     +- ClassType[@TypeMirror = "java.util.Map<java.lang.String, java.lang.String>"]
   |        |     |        +- TypeArguments[]
   |        |     |           +- ClassType[@TypeMirror = "java.lang.String"]
   |        |     |           +- ClassType[@TypeMirror = "java.lang.String"]
   |        |     +- VariableId[@Name = "nextMap", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |        +- Block[]
   |           +- ExpressionStatement[]
   |           |  +- MethodCall[@Failed = false, @Function = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>.putAll(java.util.Map<? extends java.lang.String, ? extends java.util.Map<java.lang.String, java.lang.String>>) -> void", @MethodName = "putAll", @TypeMirror = "void", @Unchecked = false, @VarargsCall = false]
   |           |     +- VariableAccess[@Name = "previousMap", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |           |     +- ArgumentList[]
   |           |        +- VariableAccess[@Name = "nextMap", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   |           +- ReturnStatement[]
   |              +- VariableAccess[@Name = "previousMap", @TypeMirror = "java.util.Map<java.lang.String, java.util.Map<java.lang.String, java.lang.String>>"]
   +- RecordDeclaration[@TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |  +- ModifierList[]
   |  +- RecordComponentList[]
   |  |  +- RecordComponent[@TypeMirror = "java.lang.String"]
   |  |  |  +- ModifierList[]
   |  |  |  +- ClassType[@TypeMirror = "java.lang.String"]
   |  |  |  +- VariableId[@Name = "name", @TypeMirror = "java.lang.String"]
   |  |  +- RecordComponent[@TypeMirror = "java.lang.String"]
   |  |     +- ModifierList[]
   |  |     +- ClassType[@TypeMirror = "java.lang.String"]
   |  |     +- VariableId[@Name = "status", @TypeMirror = "java.lang.String"]
   |  +- RecordBody[]
   +- RecordDeclaration[@TypeMirror = "org.example.unusedPrivateMethod.Book"]
   |  +- ModifierList[]
   |  +- RecordComponentList[]
   |  |  +- RecordComponent[@TypeMirror = "java.lang.String"]
   |  |  |  +- ModifierList[]
   |  |  |  +- ClassType[@TypeMirror = "java.lang.String"]
   |  |  |  +- VariableId[@Name = "title", @TypeMirror = "java.lang.String"]
   |  |  +- RecordComponent[@TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Lender>"]
   |  |     +- ModifierList[]
   |  |     +- ClassType[@TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Lender>"]
   |  |     |  +- TypeArguments[]
   |  |     |     +- ClassType[@TypeMirror = "org.example.unusedPrivateMethod.Lender"]
   |  |     +- VariableId[@Name = "lenders", @TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Lender>"]
   |  +- RecordBody[]
   +- RecordDeclaration[@TypeMirror = "org.example.unusedPrivateMethod.Library"]
      +- ModifierList[]
      +- RecordComponentList[]
      |  +- RecordComponent[@TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Book>"]
      |     +- ModifierList[]
      |     +- ClassType[@TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Book>"]
      |     |  +- TypeArguments[]
      |     |     +- ClassType[@TypeMirror = "org.example.unusedPrivateMethod.Book"]
      |     +- VariableId[@Name = "books", @TypeMirror = "java.util.Collection<org.example.unusedPrivateMethod.Book>"]
      +- RecordBody[]
