An object used with the with statement whose enter and exit methods run setup and guaranteed cleanup around a block.