code: func (c *Context) WithLock(obj mo.Reference, f func()) {
  	if c.Caller != nil && *c.Caller == obj.Reference() {
  		// Internal method invocation, obj is already locked
  		f()
  		return
  	}
  	Map.WithLock(obj, f)
  }
docs: // WithLock holds a lock for the given object while then given function is run.