MemberExpressionNode propertyChangeEventMemberExpression =
AbstractSyntaxTreeUtil.generateGetterSelector(nodeFactory, MX_EVENTS, PROPERTY_CHANGE_EVENT, false);;
IdentifierNode createUpdateEventIdentifier = nodeFactory.identifier(CREATE_UPDATE_EVENT, false);
MemberExpressionNode getterSelector =
AbstractSyntaxTreeUtil.generateGetterSelector(nodeFactory, className, false);
ArgumentListNode createUpdateEventArgumentList = nodeFactory.argumentList(null, getterSelector);
LiteralStringNode literalString = nodeFactory.literalString(qualifiedPropertyName);
createUpdateEventArgumentList = nodeFactory.argumentList(createUpdateEventArgumentList, literalString);
MemberExpressionNode oldValueMemberExpression =
AbstractSyntaxTreeUtil.generateGetterSelector(nodeFactory, OLD_VALUE, false);
createUpdateEventArgumentList =
nodeFactory.argumentList(createUpdateEventArgumentList, oldValueMemberExpression);
MemberExpressionNode valueMemberExpression =
AbstractSyntaxTreeUtil.generateGetterSelector(nodeFactory, VALUE, false);
createUpdateEventArgumentList =
nodeFactory.argumentList(createUpdateEventArgumentList, valueMemberExpression);
CallExpressionNode createUpdateEventCallExpression =
(CallExpressionNode) nodeFactory.callExpression(createUpdateEventIdentifier, createUpdateEventArgumentList);
createUpdateEventCallExpression.setRValue(false);
MemberExpressionNode createUpdateEventMemberExpression =
nodeFactory.memberExpression(propertyChangeEventMemberExpression, createUpdateEventCallExpression);
ArgumentListNode dispatchEventArgumentList =
nodeFactory.argumentList(null, createUpdateEventMemberExpression);
CallExpressionNode dispatchEventCallExpression =
(CallExpressionNode) nodeFactory.callExpression(dispatchEventIdentifier, dispatchEventArgumentList);
dispatchEventCallExpression.setRValue(false);
MemberExpressionNode eventDispatcherMemberExpression =