class VariableSymbolDeclarator extends AbstractSymbolDeclarator<VariableDeclarationExpr> {

    public VariableSymbolDeclarator(VariableDeclarationExpr wrappedNode, TypeSolver typeSolver) {
        super(wrappedNode, typeSolver);
        wrappedNode.getParentNode().ifPresent(p -> {
            if (p instanceof FieldDeclaration) {
                throw new IllegalArgumentException();
            }
        });
    }

    @Override
    public List<ResolvedValueDeclaration> getSymbolDeclarations() {<FILL_FUNCTION_BODY>}

}

        List<ResolvedValueDeclaration> variables = wrappedNode.getVariables()
                .stream()
                .map(v -> JavaParserSymbolDeclaration.localVar(v, typeSolver))
                .collect(Collectors.toCollection(ArrayList::new));

//        // FIXME: This returns ALL PatternExpr, regardless of whether it is in scope or not.
//        List<JavaParserSymbolDeclaration> patterns = wrappedNode.getVariables()
//                .stream()
//                .filter(variableDeclarator -> variableDeclarator.getInitializer().isPresent())
//                .map(variableDeclarator -> variableDeclarator.getInitializer().get())
//                .map(expression -> expression.findAll(PatternExpr.class))
//                .flatMap(Collection::stream)
//                .map(v -> JavaParserSymbolDeclaration.patternVar(v, typeSolver))
//                .collect(Collectors.toCollection(ArrayList::new));

        List<ResolvedValueDeclaration> all = new ArrayList<>(variables);
//        all.addAll(patterns);

        return all;
    
<methods>public void <init>(com.github.javaparser.ast.expr.VariableDeclarationExpr, com.github.javaparser.resolution.TypeSolver) <variables>protected com.github.javaparser.resolution.TypeSolver typeSolver,protected com.github.javaparser.ast.expr.VariableDeclarationExpr wrappedNode