def METHOD_NAME(self, size=-1):
    """Read at most size bytes from the chunk.
    If size is omitted or negative, read until the end
    of the chunk.
    """
    if self.closed:
        raise ValueError, "I/O operation on closed file"
    if self.size_read >= self.chunksize:
        return ''
    if size < 0:
        size = self.chunksize - self.size_read
    if size > self.chunksize - self.size_read:
        size = self.chunksize - self.size_read
    data = self.file.METHOD_NAME(size)
    self.size_read = self.size_read + len(data)
    if self.size_read == self.chunksize and \
       self.align and \
       (self.chunksize & 1):
        dummy = self.file.METHOD_NAME(1)
        self.size_read = self.size_read + len(dummy)
    return data