code: func getKeys(info map[string]interface{}, keysSet map[string]bool) {
  	for k, v := range info {
  		if strings.Contains(k, "*") {
  			kew := strings.Replace(k, "*", "", 1)
  			keysSet[kew] = true
  		}
  
  		listofouts, ok := v.([]interface{})
  		if ok {
  			for i := range listofouts {
  				aux, ok := listofouts[i].(map[string]interface{})
  				if !ok {
  					continue
  				}
  				getKeys(aux, keysSet)
  			}
  		}
  
  		if aux, ok := v.(map[string]interface{}); ok {
  			getKeys(aux, keysSet)
  		}
  	}
  }
docs: // Get recursively all protos needed in a Unmarshal json.