code: func (e Equalities) DeepDerivative(a1, a2 interface{}) bool {
  	if a1 == nil {
  		return true
  	}
  	v1 := reflect.ValueOf(a1)
  	v2 := reflect.ValueOf(a2)
  	if v1.Type() != v2.Type() {
  		return false
  	}
  	return e.deepValueDerive(v1, v2, make(map[visit]bool), 0)
  }
docs: // DeepDerivative is similar to DeepEqual except that unset fields in a1 are
  // ignored (not compared). This allows us to focus on the fields that matter to
  // the semantic comparison.
  //
  // The unset fields include a nil pointer and an empty string.