}
private HoldingContainer visitValueVectorWriteExpression(ValueVectorWriteExpression e, CodeGenerator<?> generator) {
LogicalExpression child = e.getChild();
HoldingContainer inputContainer = child.accept(this, generator);
JBlock block = generator.getEvalBlock();
JExpression outIndex = generator.getMappingSet().getValueWriteIndex();
JVar vv = generator.declareVectorValueSetupAndMember(generator.getMappingSet().getOutgoing(), e.getFieldId());
String setMethod = e.isSafe() ? "setSafe" : "set";
JInvocation setMeth;
if (Types.usesHolderForGet(inputContainer.getMajorType())) {
setMeth = vv.invoke("getMutator").invoke(setMethod).arg(outIndex).arg(inputContainer.getHolder());
}else{
setMeth = vv.invoke("getMutator").invoke(setMethod).arg(outIndex).arg(inputContainer.getValue());
}
if(e.isSafe()){
HoldingContainer outputContainer = generator.declare(Types.REQUIRED_BIT);
block.assign(outputContainer.getValue(), JExpr.lit(1));
if(inputContainer.isOptional()){
// block._if(vv.invoke("getMutator").invoke(setMethod).arg(outIndex).not())._then().assign(outputContainer.getValue(), JExpr.lit(0));
JConditional jc = block._if(inputContainer.getIsSet().eq(JExpr.lit(0)).not());
block = jc._then();
}
block._if(setMeth.not())._then().assign(outputContainer.getValue(), JExpr.lit(0));
return outputContainer;
}else{
if (inputContainer.isOptional()) {
// block.add(vv.invoke("getMutator").invoke(setMethod).arg(outIndex));
JConditional jc = block._if(inputContainer.getIsSet().eq(JExpr.lit(0)).not());