code: func (a *Attempt) UpdateWith(other *Attempt) {
  	if a.Partial == nil {
  		a.Partial = &Attempt_Partial{}
  	}
  
  	if a.Data == nil {
  		a.Data = other.Data
  		a.Partial.Data = false
  	} else if other.Partial != nil && !other.Partial.Data {
  		a.Data.UpdateWith(other.Data)
  		a.Partial.Data = false
  	}
  
  	if a.Id == nil {
  		a.Id = other.Id
  	}
  
  	for eid, e := range other.Executions {
  		if curE, ok := a.Executions[eid]; !ok {
  			a.Executions[eid] = e
  		} else {
  			curE.UpdateWith(e)
  		}
  	}
  
  	if a.FwdDeps == nil {
  		a.FwdDeps = other.FwdDeps
  	} else {
  		a.FwdDeps.UpdateWith(other.FwdDeps)
  	}
  
  	if a.BackDeps == nil {
  		a.BackDeps = other.BackDeps
  	} else {
  		a.BackDeps.UpdateWith(other.BackDeps)
  	}
  }
docs: // UpdateWith updates this Attempt with data from other.