Don't resize the buffer for every chunk if its capacity is != the number of points to read per chunk (just make sure it is big enough. Allocate the size of the Writer's buffer to be the min(num_to_write, def_chunk_size) if num_to_write is not 0
getNumPoints caches the previous stage's point count if it is expected to forward it instead of asking the entire pipeline every time for the point count