code: func NewSwitchMultilevelV4(data []byte) (*SwitchMultilevelV4, error) {
  	if len(data) != 3 {
  		return nil, fmt.Errorf("Wrong length, expected 3 byte got %d", len(data))
  	}
  
  	return &SwitchMultilevelV4{
  		CurrentValue: math.Min(float64(data[0]), 100),
  		TargetValue:  math.Min(float64(data[1]), 100),
  		Duration:     commands.Duration(data[2]),
  		Valid:        data[0] != 0xFE,
  		TargetValid:  data[1] != 0xFE,
  		data:         data,
  	}, nil
  }
docs: // NewSwitchMultilevelV4 creates a new SwitchMultilevelV1 report from binary data sent from a
  // zwave node