func (dec *decoder) align(n int) {
	if dec.pos%n != 0 {
		newpos := (dec.pos + n - 1) & ^(n - 1)
		empty := make([]byte, newpos-dec.pos)
		if _, err := io.ReadFull(dec.in, empty); err != nil {
			panic(err)
		}
		dec.pos = newpos
	}
}
align aligns the input to the given boundary and panics on error.
package dbus
import (
	"encoding/binary"
	"io"
	"reflect"
)
type decoder struct {
	in    io.Reader
	order binary.ByteOrder
	pos   int
}
func newDecoder(in io.Reader, order binary.ByteOrder) *decoder {
	dec := new(decoder)
	dec.in = in
	dec.order = order
	return dec
}