code: func (abi ABI) UnpackIntoMap(v map[string]interface{}, name string, data []byte) (err error) {
  	if len(data) == 0 {
  		return fmt.Errorf("abi: unmarshalling empty output")
  	}
  	// since there can't be naming collisions with contracts and events,
  	// we need to decide whether we're calling a method or an event
  	if method, ok := abi.Methods[name]; ok {
  		if len(data)%32 != 0 {
  			return fmt.Errorf("abi: improperly formatted output")
  		}
  		return method.Outputs.UnpackIntoMap(v, data)
  	}
  	if event, ok := abi.Events[name]; ok {
  		return event.Inputs.UnpackIntoMap(v, data)
  	}
  	return fmt.Errorf("abi: could not locate named method or event")
  }
docs: // UnpackIntoMap unpacks a log into the provided map[string]interface{}