code: func extractFullErrorMessage(e DropboxError, includeStack bool) string {
  	var ok bool
  	var lastDbxErr DropboxError
  	errMsg := bytes.NewBuffer(make([]byte, 0, 1024))
  
  	dbxErr := e
  	for {
  		lastDbxErr = dbxErr
  		errMsg.WriteString(dbxErr.GetMessage())
  
  		innerErr := dbxErr.GetInner()
  		if innerErr == nil {
  			break
  		}
  		dbxErr, ok = innerErr.(DropboxError)
  		if !ok {
  			// We have reached the end and traveresed all inner errors.
  			// Add last message and exit loop.
  			errMsg.WriteString(innerErr.Error())
  			break
  		}
  		errMsg.WriteString("\n")
  	}
  	if includeStack {
  		errMsg.WriteString("\nORIGINAL STACK TRACE:\n")
  		errMsg.WriteString(lastDbxErr.GetStack())
  	}
  	return errMsg.String()
  }
docs: // Constructs full error message for a given DropboxError by traversing
  // all of its inner errors. If includeStack is True it will also include
  // stack trace from deepest DropboxError in the chain.