code: func (ui *UI) DisplayChangeForPush(header string, stringTypePadding int, hiddenValue bool, originalValue interface{}, newValue interface{}) error {
  	ui.terminalLock.Lock()
  	defer ui.terminalLock.Unlock()
  
  	originalType := reflect.ValueOf(originalValue).Type()
  	newType := reflect.ValueOf(newValue).Type()
  	if originalType != newType {
  		return ErrValueMissmatch
  	}
  
  	offset := strings.Repeat(" ", stringTypePadding)
  
  	switch oVal := originalValue.(type) {
  	case int:
  		nVal := newValue.(int)
  		ui.displayDiffForInt(offset, header, oVal, nVal)
  	case types.NullInt:
  		nVal := newValue.(types.NullInt)
  		ui.displayDiffForNullInt(offset, header, oVal, nVal)
  	case uint64:
  		nVal := newValue.(uint64)
  		ui.displayDiffForUint64(offset, header, oVal, nVal)
  	case string:
  		nVal := newValue.(string)
  		ui.displayDiffForString(offset, header, hiddenValue, oVal, nVal)
  	case []string:
  		nVal := newValue.([]string)
  		if len(oVal) == 0 && len(nVal) == 0 {
  			return nil
  		}
  
  		ui.displayDiffForStrings(offset, header, oVal, nVal)
  	case map[string]string:
  		nVal := newValue.(map[string]string)
  		if len(oVal) == 0 && len(nVal) == 0 {
  			return nil
  		}
  
  		ui.displayDiffForMapStringString(offset, header, oVal, nVal)
  	default:
  		panic(fmt.Sprintf("diff display does not have case for '%s'", header))
  	}
  	return nil
  }
docs: // DisplayChangeForPush will display the header and old/new value with the
  // appropriately red/green minuses and pluses.