code: func UnpackEvent(eventSpec *EventSpec, topics []burrow_binary.Word256, data []byte, args ...interface{}) error {
  	// First unpack the topic fields
  	topicIndex := 0
  	if !eventSpec.Anonymous {
  		topicIndex++
  	}
  
  	for i, a := range eventSpec.Inputs {
  		if a.Indexed {
  			_, err := a.EVM.unpack(topics[topicIndex].Bytes(), 0, args[i])
  			if err != nil {
  				return err
  			}
  			topicIndex++
  		}
  	}
  
  	// Now unpack the other fields. unpack will step over any indexed fields
  	return unpack(eventSpec.Inputs, data, func(i int) interface{} {
  		return args[i]
  	})
  }
docs: /*
   * Given a eventSpec, get all the fields (topic fields or not)
   */