I don’t think DocumentLock actually locks the database, I think it just prevents execution contexts
It’s not an AcDbObject, so I’m pretty sure that letting the garbage collector handle it is safe, Dispose only calls its destructor
BTW, doc.CloseAndDiscard(); calls the COM version of Document.close with the false parameter.
Also an FYI "The document does not need to be locked to open an AcDbObject in AcDb::kForRead, nor to get system variables."
according to the docs