code: func TruncateTooLongNumber(number *PhoneNumber) bool {
  	if IsValidNumber(number) {
  		return true
  	}
  	var numberCopy *PhoneNumber
  	proto.Merge(numberCopy, number)
  	nationalNumber := number.GetNationalNumber()
  	nationalNumber /= 10
  	numberCopy.NationalNumber = proto.Uint64(nationalNumber)
  	if IsPossibleNumberWithReason(numberCopy) == TOO_SHORT || nationalNumber == 0 {
  		return false
  	}
  	for !IsValidNumber(numberCopy) {
  		nationalNumber /= 10
  		numberCopy.NationalNumber = proto.Uint64(nationalNumber)
  		if IsPossibleNumberWithReason(numberCopy) == TOO_SHORT ||
  			nationalNumber == 0 {
  			return false
  		}
  	}
  
  	number.NationalNumber = proto.Uint64(nationalNumber)
  	return true
  }
docs: // Attempts to extract a valid number from a phone number that is too long
  // to be valid, and resets the PhoneNumber object passed in to that valid
  // version. If no valid number could be extracted, the PhoneNumber object
  // passed in will not be modified.