public SymbolReference < ResolvedConstructorDeclaration > solve ( ObjectCreationExpr objectCreationExpr , boolean solveLambdas ) { List < ResolvedType > argumentTypes = new LinkedList <> ( ) ; List < LambdaArgumentTypePlaceholder > placeholders = new LinkedList <> ( ) ; solveArguments ( objectCreationExpr , objectCreationExpr . getArguments ( ) , solveLambdas , argumentTypes , placeholders ) ; ResolvedType classDecl = JavaParserFacade . get ( typeSolver ) . convert ( objectCreationExpr . getType ( ) , objectCreationExpr ) ; if ( ! classDecl . isReferenceType ( ) ) { return SymbolReference . unsolved ( ResolvedConstructorDeclaration . class ) ; } SymbolReference < ResolvedConstructorDeclaration > res = ConstructorResolutionLogic . findMostApplicable ( ( ( ResolvedClassDeclaration ) classDecl . asReferenceType ( ) . getTypeDeclaration ( ) ) . getConstructors ( ) , argumentTypes , typeSolver ) ; for ( LambdaArgumentTypePlaceholder placeholder : placeholders ) { placeholder . setMethod ( res ) ; } return res ; }
Given a constructor call find out to which constructor declaration it corresponds .