return new UntilNode(expr, condStart, condOffset, blockStart, blockOffset, fields, pCtx); case ASTNode.BLOCK_DO: return new DoNode(expr, condStart, condOffset, blockStart, blockOffset, fields, pCtx); case ASTNode.BLOCK_DO_UNTIL: return new DoUntilNode(expr, condStart, condOffset, blockStart, blockOffset, pCtx);
return new UntilNode(expr, condStart, condOffset, blockStart, blockOffset, fields, pCtx); case ASTNode.BLOCK_DO: return new DoNode(expr, condStart, condOffset, blockStart, blockOffset, fields, pCtx); case ASTNode.BLOCK_DO_UNTIL: return new DoUntilNode(expr, condStart, condOffset, blockStart, blockOffset, pCtx);
return new UntilNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_DO: return new DoNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), fields, pCtx); case ASTNode.BLOCK_DO_UNTIL: return new DoUntilNode(subArray(condStart, condEnd), subArray(blockStart, blockEnd), pCtx);