whole_func_string: function pedigreeConvenienceFunctionGenerator(numberLabel) {
    return {
      getPersons:    function()    { return maybe(this.getData()).persons; },
      exists:        function(num) { return !!maybe(maybe(utils.find(maybe(this.getData()).persons, matchPersonNum(numberLabel, num))).data).id; },
      getPerson:     function(num) { return utils.find(maybe(this.getData()).persons, matchPersonNum(numberLabel, num)); }
    };
  }
func_code_string: function pedigreeConvenienceFunctionGenerator(numberLabel) {
    return {
      getPersons:    function()    { return maybe(this.getData()).persons; },
      exists:        function(num) { return !!maybe(maybe(utils.find(maybe(this.getData()).persons, matchPersonNum(numberLabel, num))).data).id; },
      getPerson:     function(num) { return utils.find(maybe(this.getData()).persons, matchPersonNum(numberLabel, num)); }
    };
  }
func_documentation_string: @ngdoc overview
  @name pedigree
  @description
  Get someone's ancestry or descendancy
  
  {@link https://familysearch.org/developers/docs/api/resources#pedigree FamilySearch API Docs}
   
  Generate ancestry or descendancy convenience functions
  
  @param numberLabel ascendancyNumber or descendancyNumber
  @returns {{getPersons: Function, exists: Function, getPerson: Function}}