Example usage for org.eclipse.jdt.core.dom ForStatement setExpression

List of usage examples for org.eclipse.jdt.core.dom ForStatement setExpression

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom ForStatement setExpression.

Prototype

public void setExpression(Expression expression) 

Source Link

Document

Sets or clears the condition expression of this return statement.

Usage

From source file:com.google.devtools.j2objc.translate.ASTFactory.java

License:Apache License

public static ForStatement newForStatement(AST ast, VariableDeclarationExpression decl, Expression cond,
        Expression updater, Statement body) {
    ForStatement forLoop = ast.newForStatement();
    ASTUtil.getInitializers(forLoop).add(decl);
    forLoop.setExpression(cond);
    ASTUtil.getUpdaters(forLoop).add(updater);
    forLoop.setBody(body);/*from  w  w  w  . j  a v  a 2  s  .c o m*/
    return forLoop;
}

From source file:java5totext.input.JDTVisitor.java

License:Open Source License

@Override
public void endVisit(org.eclipse.jdt.core.dom.ForStatement node) {
    ForStatement element = (ForStatement) this.binding.get(node);
    this.initializeNode(element, node);

    if (this.binding.get(node.getExpression()) != null)
        element.setExpression((Expression) this.binding.get(node.getExpression()));
    for (Iterator<?> i = node.updaters().iterator(); i.hasNext();) {
        Expression itElement = (Expression) this.binding.get(i.next());
        if (itElement != null)
            element.getUpdaters().add(itElement);
    }/*from w  ww  .j  a  va2 s.c  om*/
    for (Iterator<?> i = node.initializers().iterator(); i.hasNext();) {
        Expression itElement = (Expression) this.binding.get(i.next());
        if (itElement != null)
            element.getInitializers().add(itElement);
    }
    if (this.binding.get(node.getBody()) != null)
        element.setBody((Statement) this.binding.get(node.getBody()));
}

From source file:org.asup.dk.compiler.rpj.writer.JDTStatementWriter.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override// w w  w . java2s.co m
public boolean visit(QFor statement) {

    Block block = blocks.peek();

    ForStatement forSt = ast.newForStatement();

    // initialization
    QAssignmentExpression assignment = expressionParser.parseAssignment(statement.getInitialization());
    forSt.initializers().add(buildAssignmentMethod(assignment));

    // condition
    QPredicateExpression condition = expressionParser.parsePredicate(statement.getCondition());
    Expression expression = buildExpression(ast, condition,
            CompilationContextHelper.getJavaClass(compilationUnit, condition));
    forSt.setExpression(expression);

    // increment
    QAssignmentExpression increment = expressionParser.parseAssignment(statement.getIncrement());
    forSt.updaters().add(buildAssignmentMethod(increment));

    block.statements().add(forSt);

    // body
    Block bodyBlock = ast.newBlock();
    forSt.setBody(bodyBlock);

    blocks.push(bodyBlock);

    return super.visit(statement);
}

From source file:org.eclipse.jdt.core.dom.ASTConverter.java

License:Open Source License

public ForStatement convert(org.eclipse.jdt.internal.compiler.ast.ForStatement statement) {
    ForStatement forStatement = new ForStatement(this.ast);
    forStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1);
    org.eclipse.jdt.internal.compiler.ast.Statement[] initializations = statement.initializations;
    if (initializations != null) {
        // we know that we have at least one initialization
        if (initializations[0] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) {
            org.eclipse.jdt.internal.compiler.ast.LocalDeclaration initialization = (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[0];
            VariableDeclarationExpression variableDeclarationExpression = convertToVariableDeclarationExpression(
                    initialization);//from  w  w w  . ja va 2 s . c  om
            int initializationsLength = initializations.length;
            for (int i = 1; i < initializationsLength; i++) {
                initialization = (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[i];
                variableDeclarationExpression.fragments()
                        .add(convertToVariableDeclarationFragment(initialization));
            }
            if (initializationsLength != 1) {
                int start = variableDeclarationExpression.getStartPosition();
                int end = ((org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[initializationsLength
                        - 1]).declarationSourceEnd;
                variableDeclarationExpression.setSourceRange(start, end - start + 1);
            }
            forStatement.initializers().add(variableDeclarationExpression);
        } else {
            int initializationsLength = initializations.length;
            for (int i = 0; i < initializationsLength; i++) {
                Expression initializer = convertToExpression(initializations[i]);
                if (initializer != null) {
                    forStatement.initializers().add(initializer);
                } else {
                    forStatement.setFlags(forStatement.getFlags() | ASTNode.MALFORMED);
                }
            }
        }
    }
    if (statement.condition != null) {
        forStatement.setExpression(convert(statement.condition));
    }
    org.eclipse.jdt.internal.compiler.ast.Statement[] increments = statement.increments;
    if (increments != null) {
        int incrementsLength = increments.length;
        for (int i = 0; i < incrementsLength; i++) {
            forStatement.updaters().add(convertToExpression(increments[i]));
        }
    }
    final Statement action = convert(statement.action);
    if (action == null)
        return null;
    forStatement.setBody(action);
    return forStatement;
}

From source file:org.eclipse.modisco.java.discoverer.internal.io.java.JDTVisitor.java

License:Open Source License

@Override
public void endVisit(final org.eclipse.jdt.core.dom.ForStatement node) {
    ForStatement element = (ForStatement) this.binding.get(node);
    initializeNode(element, node);//from  w  ww . j av  a2  s . c o  m

    if (this.binding.get(node.getExpression()) != null) {
        element.setExpression(JDTVisitorUtils.completeExpression(this.binding.get(node.getExpression()), this));
    }
    for (Iterator<?> i = node.updaters().iterator(); i.hasNext();) {
        ASTNode itElement = this.binding.get(i.next());
        if (itElement != null) {
            element.getUpdaters().add(JDTVisitorUtils.completeExpression(itElement, this));
        }
    }

    for (Iterator<?> i = node.initializers().iterator(); i.hasNext();) {
        ASTNode itElement = this.binding.get(i.next());
        if (itElement != null) {
            element.getInitializers().add(JDTVisitorUtils.completeExpression(itElement, this));
        }
    }
    if (this.binding.get(node.getBody()) != null) {
        element.setBody((Statement) this.binding.get(node.getBody()));
    }
}

From source file:org.mpi.vasco.sieve.staticanalysis.templatecreator.DatabaseTableClassCreator.java

License:Open Source License

/**
 * Creates the is contained function.// ww  w. j a v  a2s. c om
 *
 * @return the method declaration
 */
public MethodDeclaration createIsContainedFunction() {
    String methodName = "isContained";
    MethodDeclaration methodDeclaration = super.createMethodDeclaration(PrimitiveType.BOOLEAN, methodName,
            ModifierKeyword.PUBLIC_KEYWORD);
    String recordName = tableInstance.get_Table_Name() + DatabaseRecordClassCreator.RECORDSTRING;
    SingleVariableDeclaration varDecl = super.createVariableDeclaration(recordName, recordName.toLowerCase(),
            false);
    methodDeclaration.parameters().add(varDecl);
    org.eclipse.jdt.core.dom.Block block = super.getASTNode().newBlock();
    //add the index variable
    String indexVar = "i";
    VariableDeclarationStatement varDeclStmt = super.createVariableDeclarationStatement(PrimitiveType.INT,
            indexVar, false, null);
    block.statements().add(varDeclStmt);

    //put a for loop here
    ForStatement forStmt = super.getASTNode().newForStatement();
    //set initializer
    Assignment assignExpr = super.getASTNode().newAssignment();
    assignExpr.setOperator(Assignment.Operator.ASSIGN);
    assignExpr.setLeftHandSide(super.getASTNode().newSimpleName(indexVar));
    NumberLiteral initializedValue = super.getASTNode().newNumberLiteral("0");
    assignExpr.setRightHandSide(initializedValue);
    forStmt.initializers().add(assignExpr);

    //set condition expression

    InfixExpression infixExpr = super.getASTNode().newInfixExpression();
    infixExpr.setOperator(InfixExpression.Operator.LESS);
    infixExpr.setLeftOperand(super.getASTNode().newSimpleName(indexVar));

    FieldAccess fieldA = super.getASTNode().newFieldAccess();
    fieldA.setExpression(super.getASTNode().newThisExpression());
    fieldA.setName(super.getASTNode().newSimpleName("size"));
    infixExpr.setRightOperand(fieldA);

    forStmt.setExpression(infixExpr);

    //set update
    PostfixExpression updateExpr = super.getASTNode().newPostfixExpression();
    updateExpr.setOperator(PostfixExpression.Operator.INCREMENT);
    updateExpr.setOperand(super.getASTNode().newSimpleName(indexVar));

    forStmt.updaters().add(updateExpr);

    //set for loop body
    org.eclipse.jdt.core.dom.Block forLoopBlock = super.getASTNode().newBlock();

    //add a if statement

    IfStatement ifStmt = super.getASTNode().newIfStatement();

    //set if condition
    InfixExpression ifCondExp = super.getASTNode().newInfixExpression();
    //left expr is in the form: this.table[i]
    ArrayAccess arrayA = super.getASTNode().newArrayAccess();
    FieldAccess tableFieldA = super.getASTNode().newFieldAccess();
    tableFieldA.setExpression(super.getASTNode().newThisExpression());
    tableFieldA.setName(super.getASTNode().newSimpleName("table"));
    arrayA.setArray(tableFieldA);
    arrayA.setIndex(super.getASTNode().newSimpleName(indexVar));
    ifCondExp.setLeftOperand(arrayA);
    //equal operator
    ifCondExp.setOperator(InfixExpression.Operator.EQUALS);
    //right expr
    ifCondExp.setRightOperand(super.getASTNode().newSimpleName(recordName.toLowerCase()));

    ifStmt.setExpression(ifCondExp);
    //add block for ifStmt
    org.eclipse.jdt.core.dom.Block ifBlock = super.getASTNode().newBlock();

    ReturnStatement trueReturnStmt = super.getASTNode().newReturnStatement();
    BooleanLiteral trueValue = super.getASTNode().newBooleanLiteral(true);
    trueReturnStmt.setExpression(trueValue);

    ifBlock.statements().add(trueReturnStmt);
    ifStmt.setThenStatement(ifBlock);
    forLoopBlock.statements().add(ifStmt);
    forStmt.setBody(forLoopBlock);

    block.statements().add(forStmt);

    //return false
    ReturnStatement falseReturnStmt = super.getASTNode().newReturnStatement();
    BooleanLiteral falseValue = super.getASTNode().newBooleanLiteral(false);
    falseReturnStmt.setExpression(falseValue);
    block.statements().add(falseReturnStmt);

    methodDeclaration.setBody(block);
    return methodDeclaration;
}

From source file:org.mpi.vasco.sieve.staticanalysis.templatecreator.DatabaseTableClassCreator.java

License:Open Source License

/**
 * Creates the get index function.//from   w  w w.jav a 2 s  .  co  m
 *
 * @return the method declaration
 */
public MethodDeclaration createGetIndexFunction() {
    String methodName = "getIndex";
    MethodDeclaration methodDeclaration = super.createMethodDeclaration(PrimitiveType.INT, methodName,
            ModifierKeyword.PUBLIC_KEYWORD);
    String recordName = tableInstance.get_Table_Name() + DatabaseRecordClassCreator.RECORDSTRING;
    SingleVariableDeclaration varDecl = super.createVariableDeclaration(recordName, recordName.toLowerCase(),
            false);
    methodDeclaration.parameters().add(varDecl);
    org.eclipse.jdt.core.dom.Block block = super.getASTNode().newBlock();
    //add the index variable
    String indexVar = "i";
    VariableDeclarationStatement varDeclStmt = super.createVariableDeclarationStatement(PrimitiveType.INT,
            indexVar, false, null);
    block.statements().add(varDeclStmt);

    //put a for loop here
    ForStatement forStmt = super.getASTNode().newForStatement();
    //set initializer
    Assignment assignExpr = super.getASTNode().newAssignment();
    assignExpr.setOperator(Assignment.Operator.ASSIGN);
    assignExpr.setLeftHandSide(super.getASTNode().newSimpleName(indexVar));
    NumberLiteral initializedValue = super.getASTNode().newNumberLiteral("0");
    assignExpr.setRightHandSide(initializedValue);
    forStmt.initializers().add(assignExpr);

    //set condition expression

    InfixExpression infixExpr = super.getASTNode().newInfixExpression();
    infixExpr.setOperator(InfixExpression.Operator.LESS);
    infixExpr.setLeftOperand(super.getASTNode().newSimpleName(indexVar));

    FieldAccess fieldA = super.getASTNode().newFieldAccess();
    fieldA.setExpression(super.getASTNode().newThisExpression());
    fieldA.setName(super.getASTNode().newSimpleName("size"));
    infixExpr.setRightOperand(fieldA);

    forStmt.setExpression(infixExpr);

    //set update
    PostfixExpression updateExpr = super.getASTNode().newPostfixExpression();
    updateExpr.setOperator(PostfixExpression.Operator.INCREMENT);
    updateExpr.setOperand(super.getASTNode().newSimpleName(indexVar));

    forStmt.updaters().add(updateExpr);

    //set for loop body
    org.eclipse.jdt.core.dom.Block forLoopBlock = super.getASTNode().newBlock();

    //add a if statement

    IfStatement ifStmt = super.getASTNode().newIfStatement();

    //set if condition
    InfixExpression ifCondExp = super.getASTNode().newInfixExpression();
    //left expr is in the form: this.table[i]
    ArrayAccess arrayA = super.getASTNode().newArrayAccess();
    FieldAccess tableFieldA = super.getASTNode().newFieldAccess();
    tableFieldA.setExpression(super.getASTNode().newThisExpression());
    tableFieldA.setName(super.getASTNode().newSimpleName("table"));
    arrayA.setArray(tableFieldA);
    arrayA.setIndex(super.getASTNode().newSimpleName(indexVar));
    ifCondExp.setLeftOperand(arrayA);
    //equal operator
    ifCondExp.setOperator(InfixExpression.Operator.EQUALS);
    //right expr
    ifCondExp.setRightOperand(super.getASTNode().newSimpleName(recordName.toLowerCase()));

    ifStmt.setExpression(ifCondExp);
    //add block for ifStmt
    org.eclipse.jdt.core.dom.Block ifBlock = super.getASTNode().newBlock();

    ReturnStatement indexReturnStmt = super.getASTNode().newReturnStatement();
    indexReturnStmt.setExpression(super.getASTNode().newSimpleName(indexVar));

    ifBlock.statements().add(indexReturnStmt);
    ifStmt.setThenStatement(ifBlock);
    forLoopBlock.statements().add(ifStmt);
    forStmt.setBody(forLoopBlock);

    block.statements().add(forStmt);

    //return false
    ReturnStatement noIndexReturnStmt = super.getASTNode().newReturnStatement();
    NumberLiteral noIndexValue = super.getASTNode().newNumberLiteral("-1");
    noIndexReturnStmt.setExpression(noIndexValue);
    block.statements().add(noIndexReturnStmt);

    methodDeclaration.setBody(block);
    return methodDeclaration;
}

From source file:org.smeup.sys.dk.compiler.rpj.writer.JDTStatementWriter.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override/*w  w w  . j a va  2s. c  o m*/
public boolean visit(QFor statement) {

    Block block = blocks.peek();

    ForStatement forSt = ast.newForStatement();

    // initialization
    QAssignmentExpression assignment = expressionParser.parseAssignment(statement.getInitialization());
    forSt.initializers().add(buildAssignmentMethod(assignment, false));

    // condition
    QPredicateExpression condition = buildIterationCondition(statement.getCondition());
    Expression expression = JDTStatementHelper.buildExpression(ast, compilationUnit, condition,
            RPJContextHelper.getTargetClass(compilationUnit, condition, true));
    forSt.setExpression(expression);

    // increment
    QAssignmentExpression increment = expressionParser.parseAssignment(statement.getIncrement());
    forSt.updaters().add(buildAssignmentMethod(increment, false));

    block.statements().add(forSt);

    // body
    Block bodyBlock = ast.newBlock();
    forSt.setBody(bodyBlock);

    blocks.push(bodyBlock);

    return super.visit(statement);
}

From source file:org.whole.lang.java.util.JDTTransformerVisitor.java

License:Open Source License

public boolean visit(ForStatement node) {
    org.whole.lang.java.model.ForStatement forStm = lf.create(JavaEntityDescriptorEnum.ForStatement);

    Iterator<?> i = node.initializers().iterator();
    while (i.hasNext()) {
        ((ASTNode) i.next()).accept(this);
        forStm.getInitializers().wAdd(exp);
    }/*from  w ww  .j a v  a  2  s .c om*/

    if (acceptChild(node.getExpression()))
        forStm.setExpression(exp);

    i = node.updaters().iterator();
    while (i.hasNext()) {
        ((ASTNode) i.next()).accept(this);
        forStm.getUpdaters().wAdd(exp);
    }

    acceptChild(node.getBody());
    forStm.setBody(stm);

    stm = forStm;
    return false;
}

From source file:refactorer.Refactorer.java

License:Apache License

@SuppressWarnings("unchecked")
protected void processTypeDeclaration(AbstractTypeDeclaration type) {
    if (type == null)
        return;/*from   w ww  . j a  v a 2  s.co  m*/

    List<BodyDeclaration> bodies = type.bodyDeclarations();
    for (BodyDeclaration body : bodies) {
        processBodyDeclaration(body);
    }

    if (type.getNodeType() == ASTNode.TYPE_DECLARATION) {
        TypeDeclaration typeDeclaration = (TypeDeclaration) type;

        if (typeDeclaration.getSuperclassType() != null) {
            ITypeBinding superclass = typeDeclaration.getSuperclassType().resolveBinding();
            if (superclass != null) {
                if ("javax.media.opengl.GLCanvas".equals(superclass.getQualifiedName())) {
                    addImportIfRequired("javax.media.opengl.awt.GLCanvas");
                } else if ("javax.media.opengl.GLJPanel".equals(superclass.getQualifiedName())) {
                    addImportIfRequired("javax.media.opengl.awt.GLJPanel");
                }
            }
        }

        for (Type interfaceType : (List<Type>) typeDeclaration.superInterfaceTypes()) {
            ITypeBinding binding = interfaceType.resolveBinding();
            if (binding != null) {
                String interfaceName = binding.getQualifiedName();
                if ("javax.media.opengl.GLEventListener".equals(interfaceName)) {
                    for (int i = bodies.size() - 1; i >= 0; i--) {
                        BodyDeclaration body = bodies.get(i);
                        if (body.getNodeType() == ASTNode.METHOD_DECLARATION) {
                            MethodDeclaration methodDeclaration = (MethodDeclaration) body;
                            if ("displayChanged".equals(methodDeclaration.getName().getFullyQualifiedName())) {
                                bodies.remove(i);
                            }
                        }
                    }

                    AST ast = typeDeclaration.getAST();
                    MethodDeclaration methodDeclaration = ast.newMethodDeclaration();
                    methodDeclaration.setName(ast.newSimpleName("dispose"));
                    methodDeclaration.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));
                    methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));
                    Block block = ast.newBlock();
                    methodDeclaration.setBody(block);
                    SingleVariableDeclaration parameter = ast.newSingleVariableDeclaration();
                    parameter.setName(ast.newSimpleName("glDrawable"));
                    parameter.setType(ast.newSimpleType(ast.newName("GLAutoDrawable")));
                    methodDeclaration.parameters().add(parameter);
                    bodies.add(methodDeclaration);

                    if ("performance.VBORenderer.GLDisplay.MyGLEventListener"
                            .equals(type.resolveBinding().getQualifiedName())) {
                        ForStatement forStatement = ast.newForStatement();

                        VariableDeclarationFragment forInitializerFragment = ast
                                .newVariableDeclarationFragment();
                        forInitializerFragment.setName(ast.newSimpleName("i"));
                        forInitializerFragment.setInitializer(ast.newNumberLiteral("0"));
                        VariableDeclarationExpression forInitializer = ast
                                .newVariableDeclarationExpression(forInitializerFragment);
                        forInitializer.setType(ast.newPrimitiveType(PrimitiveType.INT));
                        forStatement.initializers().add(forInitializer);

                        InfixExpression forExpression = ast.newInfixExpression();
                        forExpression.setLeftOperand(ast.newSimpleName("i"));
                        forExpression.setOperator(InfixExpression.Operator.LESS);
                        MethodInvocation rightOperand = ast.newMethodInvocation();
                        rightOperand.setExpression(ast.newSimpleName("eventListeners"));
                        rightOperand.setName(ast.newSimpleName("size"));
                        forExpression.setRightOperand(rightOperand);
                        forStatement.setExpression(forExpression);

                        PostfixExpression forUpdater = ast.newPostfixExpression();
                        forUpdater.setOperand(ast.newSimpleName("i"));
                        forUpdater.setOperator(PostfixExpression.Operator.INCREMENT);
                        forStatement.updaters().add(forUpdater);

                        Block forBlock = ast.newBlock();
                        MethodInvocation mi1 = ast.newMethodInvocation();
                        mi1.setName(ast.newSimpleName("dispose"));
                        mi1.arguments().add(ast.newName("glDrawable"));
                        CastExpression castExpression = ast.newCastExpression();
                        castExpression.setType(ast.newSimpleType(ast.newName("GLEventListener")));
                        MethodInvocation mi2 = ast.newMethodInvocation();
                        mi2.setExpression(ast.newName("eventListeners"));
                        mi2.setName(ast.newSimpleName("get"));
                        mi2.arguments().add(ast.newName("i"));
                        castExpression.setExpression(mi2);
                        ParenthesizedExpression parenthesizedExpression = ast.newParenthesizedExpression();
                        parenthesizedExpression.setExpression(castExpression);
                        mi1.setExpression(parenthesizedExpression);
                        forBlock.statements().add(ast.newExpressionStatement(mi1));
                        forStatement.setBody(forBlock);

                        block.statements().add(forStatement);
                    }
                } else if ("com.sun.opengl.impl.packrect.BackingStoreManager".equals(interfaceName)) {
                    AST ast = typeDeclaration.getAST();
                    MethodDeclaration newMethodDeclaration = ast.newMethodDeclaration();
                    newMethodDeclaration.setName(ast.newSimpleName("canCompact"));
                    newMethodDeclaration.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));
                    newMethodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.BOOLEAN));
                    Block block = ast.newBlock();
                    ReturnStatement returnStatement = ast.newReturnStatement();
                    returnStatement.setExpression(ast.newBooleanLiteral(false));
                    block.statements().add(returnStatement);
                    newMethodDeclaration.setBody(block);
                    bodies.add(newMethodDeclaration);

                    if ("gov.nasa.worldwind.util.TextureAtlas.AtlasBackingStore"
                            .equals(type.resolveBinding().getQualifiedName())) {
                        for (BodyDeclaration body : (List<BodyDeclaration>) typeDeclaration
                                .bodyDeclarations()) {
                            if (body.getNodeType() == ASTNode.METHOD_DECLARATION) {
                                MethodDeclaration methodDeclaration = (MethodDeclaration) body;
                                if ("additionFailed"
                                        .equals(methodDeclaration.getName().getFullyQualifiedName())) {
                                    methodDeclaration
                                            .setReturnType2(ast.newPrimitiveType(PrimitiveType.BOOLEAN));
                                    Block body2 = methodDeclaration.getBody();
                                    if (!body2.statements().isEmpty()) {
                                        Statement firstStatement = (Statement) body2.statements().get(0);
                                        if (firstStatement.getNodeType() == ASTNode.IF_STATEMENT) {
                                            IfStatement ifStatement = (IfStatement) firstStatement;
                                            Expression expression = ifStatement.getExpression();
                                            ifStatement.setExpression(ast.newBooleanLiteral(true));
                                            ReturnStatement newReturnStatement = ast.newReturnStatement();
                                            newReturnStatement.setExpression(expression);
                                            body2.statements().clear();
                                            body2.statements().add(newReturnStatement);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}