func (t *Table) Unmarshal(data []byte) error {
	fV2 := new(v2acl.Table)
	if err := fV2.Unmarshal(data); err != nil {
		return err
	}
	*t = *NewTableFromV2(fV2)
	return nil
}
Unmarshal unmarshals protobuf binary representation of Table.
package eacl
import (
	"crypto/sha256"
	"github.com/nspcc-dev/neofs-api-go/pkg"
	cid "github.com/nspcc-dev/neofs-api-go/pkg/container/id"
	"github.com/nspcc-dev/neofs-api-go/pkg/session"
	v2acl "github.com/nspcc-dev/neofs-api-go/v2/acl"
)
type Table struct {
	version pkg.Version
	cid     *cid.ID
	token   *session.Token
	sig     *pkg.Signature
	records []*Record
}
func (t Table) CID() *cid.ID {
	return t.cid
}
func (t *Table) SetCID(cid *cid.ID) {
	t.cid = cid
}
func (t Table) Version() pkg.Version {
	return t.version
}
func (t *Table) SetVersion(version pkg.Version) {
	t.version = version
}
func (t Table) Records() []*Record {
	return t.records
}
func (t *Table) AddRecord(r *Record) {
	if r != nil {
		t.records = append(t.records, r)
	}
}
func (t Table) SessionToken() *session.Token {
	return t.token
}
func (t *Table) SetSessionToken(tok *session.Token) {
	t.token = tok
}
func (t Table) Signature() *pkg.Signature {
	return t.sig
}
func (t *Table) SetSignature(sig *pkg.Signature) {
	t.sig = sig
}
func (t *Table) ToV2() *v2acl.Table {
	if t == nil {
		return nil
	}
	v2 := new(v2acl.Table)
	if t.cid != nil {
		v2.SetContainerID(t.cid.ToV2())
	}
	if t.records != nil {
		records := make([]*v2acl.Record, 0, len(t.records))
		for _, record := range t.records {
			records = append(records, record.ToV2())
		}
		v2.SetRecords(records)
	}
	v2.SetVersion(t.version.ToV2())
	return v2
}
func NewTable() *Table {
	t := new(Table)
	t.SetVersion(*pkg.SDKVersion())
	return t
}
func CreateTable(cid cid.ID) *Table {
	t := NewTable()
	t.SetCID(&cid)
	return t
}
func NewTableFromV2(table *v2acl.Table) *Table {
	t := new(Table)
	if table == nil {
		return t
	}
	if v := table.GetVersion(); v != nil {
		version := pkg.Version{}
		version.SetMajor(v.GetMajor())
		version.SetMinor(v.GetMinor())
		t.SetVersion(version)
	}
	if id := table.GetContainerID(); id != nil {
		if t.cid == nil {
			t.cid = new(cid.ID)
		}
		var h [sha256.Size]byte
		copy(h[:], id.GetValue())
		t.cid.SetSHA256(h)
	}
	v2records := table.GetRecords()
	t.records = make([]*Record, 0, len(v2records))
	for i := range v2records {
		t.records = append(t.records, NewRecordFromV2(v2records[i]))
	}
	return t
}
func (t *Table) Marshal(b ...[]byte) ([]byte, error) {
	var buf []byte
	if len(b) > 0 {
		buf = b[0]
	}
	return t.ToV2().
		StableMarshal(buf)
}