} else if (node instanceof IfNode) {
return IfNode.create(childSubs.get(0), childSubs.get(1), childSubs.get(2));
} else if (node instanceof ConvertBooleanNode) {
return ConvertBooleanNode.create(childSubs.get(0));
} else if (node instanceof DynamicFunctionExpressionNode) {
DynamicFunctionExpressionNode dfe = (DynamicFunctionExpressionNode) node;
return substituteFunction((FunctionDefinitionNode) dfe.getCallTarget().getRootNode(), env);
} else {
assert false;
return null;
}
}