/* * Generate all necessary binding instance AST for any data bound overrides. */ private StatementListNode genBindingInitializersAST( NodeFactory nodeFactory, StatementListNode statementList) { StatementListNode result = statementList; for (Iterator<StatesModel.Override> iter = bindingsQueue.iterator(); iter.hasNext(); ) { StatesModel.Override symbol = (StatesModel.Override) iter.next(); QualifiedIdentifierNode qualifiedIdentifier = AbstractSyntaxTreeUtil.generateQualifiedIdentifier( nodeFactory, standardDefs.getBindingPackage(), BINDINGMANAGER, false); GetExpressionNode bindExpression = nodeFactory.getExpression(qualifiedIdentifier); MemberExpressionNode lvalue = nodeFactory.memberExpression(null, bindExpression); ArgumentListNode execArgs = nodeFactory.argumentList(null, nodeFactory.thisExpression(0)); String decl = symbol.declaration.intern(); execArgs = nodeFactory.argumentList(execArgs, nodeFactory.literalString(decl, false)); IdentifierNode rvalIdentifier = nodeFactory.identifier(decl, false); GetExpressionNode getExpression = nodeFactory.getExpression(rvalIdentifier); MemberExpressionNode rvalue = nodeFactory.memberExpression(null, getExpression); execArgs = nodeFactory.argumentList(execArgs, rvalue); IdentifierNode bindIdentifier = nodeFactory.identifier(EXECUTEBINDINGS, false); CallExpressionNode selector = (CallExpressionNode) nodeFactory.callExpression(bindIdentifier, execArgs); selector.setRValue(false); MemberExpressionNode base = nodeFactory.memberExpression(lvalue, selector); ListNode list = nodeFactory.list(null, base); ExpressionStatementNode expressionStatement = nodeFactory.expressionStatement(list); result = nodeFactory.statementList(result, expressionStatement); } return result; }