@Override
public Object process(Node nd, Stack<Node> stack, NodeProcessorCtx procCtx,
Object... nodeOutputs) throws SemanticException {
ExprNodeFieldDesc fnd = (ExprNodeFieldDesc) nd;
boolean unknown = false;
int idx = 0;
ExprNodeDesc left_nd = null;
for (Object child : nodeOutputs) {
ExprNodeDesc child_nd = (ExprNodeDesc) child;
if (child_nd instanceof ExprNodeConstantDesc
&& ((ExprNodeConstantDesc) child_nd).getValue() == null) {
unknown = true;
}
left_nd = child_nd;
}
assert (idx == 0);
ExprNodeDesc newnd = null;
if (unknown) {
newnd = new ExprNodeConstantDesc(fnd.getTypeInfo(), null);
} else {
newnd = new ExprNodeFieldDesc(fnd.getTypeInfo(), left_nd, fnd.getFieldName(),
fnd.getIsList());
}
return newnd;
}