in builder.go [403:431]
func processPhoneNumberDescElement(parentDesc *PhoneNumberDesc, element *PhoneNumberDescE) *PhoneNumberDesc {
numberDesc := PhoneNumberDesc{}
if element == nil {
numberDesc.NationalNumberPattern = sp("NA")
return &numberDesc
}
if parentDesc != nil {
// New way of handling possible number lengths. We don't do this for the general
// description, since these tags won't be present; instead we will calculate its values
// based on the values for all the other number type descriptions (see
// setPossibleLengthsGeneralDesc).
lengths := make(map[int32]bool)
localOnlyLengths := make(map[int32]bool)
populatePossibleLengthSets([]*PhoneNumberDescE{element}, lengths, localOnlyLengths)
setPossibleLengths(lengths, localOnlyLengths, parentDesc, &numberDesc)
}
validPattern := element.NationalNumberPattern
if validPattern != "" {
numberDesc.NationalNumberPattern = sp(validateRE(validPattern, true))
}
exampleNumber := element.ExampleNumber
if exampleNumber != "" {
numberDesc.ExampleNumber = sp(exampleNumber)
}
return &numberDesc
}