code: func MergeAbiSpec(abiSpec []*AbiSpec) *AbiSpec {
  	newSpec := AbiSpec{
  		Events:     make(map[string]EventSpec),
  		EventsById: make(map[EventID]EventSpec),
  		Functions:  make(map[string]FunctionSpec),
  	}
  
  	for _, s := range abiSpec {
  		for n, f := range s.Functions {
  			newSpec.Functions[n] = f
  		}
  
  		// Different Abis can have the Event name, but with a different signature
  		// Loop over the signatures, as these are less likely to have collisions
  		for _, e := range s.EventsById {
  			newSpec.Events[e.Name] = e
  			newSpec.EventsById[e.EventID] = e
  		}
  	}
  
  	return &newSpec
  }
docs: // MergeAbiSpec takes multiple AbiSpecs and merges them into once structure. Note that
  // the same function name or event name can occur in different abis, so there might be
  // some information loss.