document now has a copy constructor for older versions of Visual C++ that won't automatically casr document to value.