code: func (arguments Arguments) unpackAtomic(v interface{}, marshalledValues interface{}) error {
  	if arguments.LengthNonIndexed() == 0 {
  		return nil
  	}
  	argument := arguments.NonIndexed()[0]
  	elem := reflect.ValueOf(v).Elem()
  
  	if elem.Kind() == reflect.Struct {
  		fieldmap, err := mapArgNamesToStructFields([]string{argument.Name}, elem)
  		if err != nil {
  			return err
  		}
  		field := elem.FieldByName(fieldmap[argument.Name])
  		if !field.IsValid() {
  			return fmt.Errorf("abi: field %s can't be found in the given value", argument.Name)
  		}
  		return unpack(&argument.Type, field.Addr().Interface(), marshalledValues)
  	}
  	return unpack(&argument.Type, elem.Addr().Interface(), marshalledValues)
  }
docs: // unpackAtomic unpacks ( hexdata -> go ) a single value