[zx][io] Check in generated code for io.fidl

US-462

Change-Id: I739cf8e90f221d5e43ff00dfcaffaf959a4753cc
diff --git a/src/syscall/zx/io/impl.go b/src/syscall/zx/io/impl.go
new file mode 100644
index 0000000..26d33bd
--- /dev/null
+++ b/src/syscall/zx/io/impl.go
@@ -0,0 +1,1855 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build fuchsia
+
+package io
+
+import (
+	_bindings "syscall/zx/fidl"
+	_zx "syscall/zx"
+)
+
+const (
+	KOpenRightReadable uint32 = 0x00000001
+	KOpenRightWritable uint32 = 0x00000002
+	KOpenRightAdmin uint32 = 0x00000004
+	KOpenFlagCreate uint32 = 0x00010000
+	KOpenFlagCreateIfAbsent uint32 = 0x00020000
+	KOpenFlagTruncate uint32 = 0x00040000
+	KOpenFlagDirectory uint32 = 0x00080000
+	KOpenFlagAppend uint32 = 0x00100000
+	KOpenFlagNoRemote uint32 = 0x00200000
+	KOpenFlagNodeReference uint32 = 0x00400000
+	KOpenFlagDescribe uint32 = 0x00800000
+	KOpenFlagStatus uint32 = 0x01000000
+	KModeProtectionMask uint32 = 0x00FFF
+	KModeTypeMask uint32 = 0xFF000
+	KModeTypeDirectory uint32 = 0x04000
+	KModeTypeBlockDevice uint32 = 0x06000
+	KModeTypeFile uint32 = 0x08000
+	KModeTypeSocket uint32 = 0x0C000
+	KModeTypeService uint32 = 0x10000
+	KMaxIoctlHandles uint64 = 2
+	KMaxBuf uint64 = 8192
+	KNodeAttributeFlagCreationTime uint32 = 0x00000001
+	KNodeAttributeFlagModificationTime uint32 = 0x00000002
+	KVmoFlagRead uint32 = 0x00000001
+	KVmoFlagWrite uint32 = 0x00000002
+	KVmoFlagExec uint32 = 0x00000004
+	KVmoFlagPrivate uint32 = 0x00010000
+	KDirentTypeUnknown uint32 = 0
+	KDirentTypeDirectory uint32 = 4
+	KDirentTypeBlockDevice uint32 = 6
+	KDirentTypeFile uint32 = 8
+	KDirentTypeSocket uint32 = 12
+	KDirentTypeService uint32 = 16
+)
+
+type SeekOrigin uint32
+const (
+	SeekOriginStart SeekOrigin = 0
+	SeekOriginCurrent SeekOrigin = 1
+	SeekOriginEnd SeekOrigin = 2
+)
+type Service struct {
+	Reserved uint8 
+}
+
+// Implements Payload.
+func (_ *Service) InlineAlignment() int {
+	return 1
+}
+
+// Implements Payload.
+func (_ *Service) InlineSize() int {
+	return 1
+}
+type FileObject struct {
+	Event _zx.Event `fidl:"*"`
+}
+
+// Implements Payload.
+func (_ *FileObject) InlineAlignment() int {
+	return 4
+}
+
+// Implements Payload.
+func (_ *FileObject) InlineSize() int {
+	return 4
+}
+type DirectoryObject struct {
+	Reserved uint8 
+}
+
+// Implements Payload.
+func (_ *DirectoryObject) InlineAlignment() int {
+	return 1
+}
+
+// Implements Payload.
+func (_ *DirectoryObject) InlineSize() int {
+	return 1
+}
+type Pipe struct {
+	Socket _zx.Socket 
+}
+
+// Implements Payload.
+func (_ *Pipe) InlineAlignment() int {
+	return 4
+}
+
+// Implements Payload.
+func (_ *Pipe) InlineSize() int {
+	return 4
+}
+type Vmofile struct {
+	Vmo _zx.VMO 
+	Offset uint64 
+	Length uint64 
+}
+
+// Implements Payload.
+func (_ *Vmofile) InlineAlignment() int {
+	return 8
+}
+
+// Implements Payload.
+func (_ *Vmofile) InlineSize() int {
+	return 24
+}
+type Device struct {
+	Event _zx.Event `fidl:"*"`
+}
+
+// Implements Payload.
+func (_ *Device) InlineAlignment() int {
+	return 4
+}
+
+// Implements Payload.
+func (_ *Device) InlineSize() int {
+	return 4
+}
+type NodeAttributes struct {
+	Mode uint32 
+	Id uint64 
+	ContentSize uint64 
+	StorageSize uint64 
+	LinkCount uint64 
+	CreationTime uint64 
+	ModificationTime uint64 
+}
+
+// Implements Payload.
+func (_ *NodeAttributes) InlineAlignment() int {
+	return 8
+}
+
+// Implements Payload.
+func (_ *NodeAttributes) InlineSize() int {
+	return 56
+}
+type ObjectInfoTag uint32
+const (
+	ObjectInfoService ObjectInfoTag = iota
+	ObjectInfoFile ObjectInfoTag = iota
+	ObjectInfoDirectory ObjectInfoTag = iota
+	ObjectInfoPipe ObjectInfoTag = iota
+	ObjectInfoVmofile ObjectInfoTag = iota
+	ObjectInfoDevice ObjectInfoTag = iota
+)
+
+// ObjectInfo is a FIDL union.
+type ObjectInfo struct {
+	ObjectInfoTag `fidl:"tag"`
+	Service Service 
+	File FileObject 
+	Directory DirectoryObject 
+	Pipe Pipe 
+	Vmofile Vmofile 
+	Device Device 
+}
+
+// Implements Payload.
+func (_ *ObjectInfo) InlineAlignment() int {
+	return 8
+}
+
+// Implements Payload.
+func (_ *ObjectInfo) InlineSize() int {
+	return 32
+}
+
+func (u *ObjectInfo) Which() ObjectInfoTag {
+	return u.ObjectInfoTag
+}
+
+func (u *ObjectInfo) SetService(service Service) {
+	u.ObjectInfoTag = ObjectInfoService
+	u.Service = service
+}
+
+func (u *ObjectInfo) SetFile(file FileObject) {
+	u.ObjectInfoTag = ObjectInfoFile
+	u.File = file
+}
+
+func (u *ObjectInfo) SetDirectory(directory DirectoryObject) {
+	u.ObjectInfoTag = ObjectInfoDirectory
+	u.Directory = directory
+}
+
+func (u *ObjectInfo) SetPipe(pipe Pipe) {
+	u.ObjectInfoTag = ObjectInfoPipe
+	u.Pipe = pipe
+}
+
+func (u *ObjectInfo) SetVmofile(vmofile Vmofile) {
+	u.ObjectInfoTag = ObjectInfoVmofile
+	u.Vmofile = vmofile
+}
+
+func (u *ObjectInfo) SetDevice(device Device) {
+	u.ObjectInfoTag = ObjectInfoDevice
+	u.Device = device
+}
+
+// Request for Clone.
+type ObjectCloneRequest struct {
+	Flags uint32 
+	Object ObjectInterfaceRequest 
+}
+
+// Implements Payload.
+func (_ *ObjectCloneRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectCloneRequest) InlineSize() int {
+	return 8
+}
+// Clone has no response.
+// Request for Close.
+type ObjectCloseRequest struct {
+}
+
+// Implements Payload.
+func (_ *ObjectCloseRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectCloseRequest) InlineSize() int {
+	return 0
+}
+// Response for Close.
+type ObjectCloseResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *ObjectCloseResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectCloseResponse) InlineSize() int {
+	return 4
+}
+// Request for ListInterfaces.
+type ObjectListInterfacesRequest struct {
+}
+
+// Implements Payload.
+func (_ *ObjectListInterfacesRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectListInterfacesRequest) InlineSize() int {
+	return 0
+}
+// Response for ListInterfaces.
+type ObjectListInterfacesResponse struct {
+	Interfaces []string 
+}
+
+// Implements Payload.
+func (_ *ObjectListInterfacesResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectListInterfacesResponse) InlineSize() int {
+	return 16
+}
+// Request for Bind.
+type ObjectBindRequest struct {
+	Iface string 
+}
+
+// Implements Payload.
+func (_ *ObjectBindRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectBindRequest) InlineSize() int {
+	return 16
+}
+// Bind has no response.
+// Request for Describe.
+type ObjectDescribeRequest struct {
+}
+
+// Implements Payload.
+func (_ *ObjectDescribeRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectDescribeRequest) InlineSize() int {
+	return 0
+}
+// Response for Describe.
+type ObjectDescribeResponse struct {
+	Info ObjectInfo 
+}
+
+// Implements Payload.
+func (_ *ObjectDescribeResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectDescribeResponse) InlineSize() int {
+	return 32
+}
+// Request for OnOpen.
+// OnOpen has no request.
+// Response for OnOpen.
+type ObjectOnOpenResponse struct {
+	S _zx.Status 
+	Info *ObjectInfo 
+}
+
+// Implements Payload.
+func (_ *ObjectOnOpenResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *ObjectOnOpenResponse) InlineSize() int {
+	return 16
+}
+
+type ObjectInterface _bindings.Proxy
+
+func (p *ObjectInterface) Clone(flags uint32,object ObjectInterfaceRequest) error {
+	req_ := ObjectCloneRequest{
+		Flags: flags,
+		Object: object,
+	}
+	err := ((*_bindings.Proxy)(p)).Send(2147483649, &req_)
+	return err
+}
+func (p *ObjectInterface) Close() (_zx.Status, error) {
+	req_ := ObjectCloseRequest{
+	}
+	resp_ := ObjectCloseResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2147483650, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *ObjectInterface) ListInterfaces() ([]string, error) {
+	req_ := ObjectListInterfacesRequest{
+	}
+	resp_ := ObjectListInterfacesResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2147483652, &req_, &resp_)
+	return resp_.Interfaces, err
+}
+func (p *ObjectInterface) Bind(iface string) error {
+	req_ := ObjectBindRequest{
+		Iface: iface,
+	}
+	err := ((*_bindings.Proxy)(p)).Send(2147483653, &req_)
+	return err
+}
+func (p *ObjectInterface) Describe() (ObjectInfo, error) {
+	req_ := ObjectDescribeRequest{
+	}
+	resp_ := ObjectDescribeResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2147483654, &req_, &resp_)
+	return resp_.Info, err
+}
+func (p *ObjectInterface) ExpectOnOpen() (_zx.Status, *ObjectInfo, error) {
+	resp_ := ObjectOnOpenResponse{}
+	err := ((*_bindings.Proxy)(p)).Recv(2147483655, &resp_)
+	return resp_.S, resp_.Info, err
+}
+
+// Object server interface.
+type Object interface {
+	Clone(flags uint32,object ObjectInterfaceRequest) error
+	Close() (_zx.Status, error)
+	ListInterfaces() ([]string, error)
+	Bind(iface string) error
+	Describe() (ObjectInfo, error)
+}
+
+type ObjectInterfaceRequest _bindings.InterfaceRequest
+
+func NewObjectInterfaceRequest() (ObjectInterfaceRequest, *ObjectInterface, error) {
+	req, cli, err := _bindings.NewInterfaceRequest()
+	return ObjectInterfaceRequest(req), (*ObjectInterface)(cli), err
+}
+
+type ObjectStub struct {
+	Impl Object
+}
+
+func (s *ObjectStub) Dispatch(ord uint32, b_ []byte, h_ []_zx.Handle) (_bindings.Payload, error) {
+	switch ord {
+	case 2147483649:
+		in_ := ObjectCloneRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Clone(in_.Flags,in_.Object)
+		return nil, err_
+	case 2147483650:
+		in_ := ObjectCloseRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectCloseResponse{}
+		s, err_ := s.Impl.Close()
+		out_.S = s
+		return &out_, err_
+	case 2147483652:
+		in_ := ObjectListInterfacesRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectListInterfacesResponse{}
+		interfaces, err_ := s.Impl.ListInterfaces()
+		out_.Interfaces = interfaces
+		return &out_, err_
+	case 2147483653:
+		in_ := ObjectBindRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Bind(in_.Iface)
+		return nil, err_
+	case 2147483654:
+		in_ := ObjectDescribeRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectDescribeResponse{}
+		info, err_ := s.Impl.Describe()
+		out_.Info = info
+		return &out_, err_
+	}
+	return nil, _bindings.ErrUnknownOrdinal
+}
+
+type ObjectService struct {
+	_bindings.BindingSet
+}
+
+func (s *ObjectService) Add(impl Object, c _zx.Channel, onError func(error)) (_bindings.BindingKey, error) {
+	return s.BindingSet.Add(&ObjectStub{Impl: impl}, c, onError)
+}
+
+func (s *ObjectService) EventProxyFor(key _bindings.BindingKey) (*ObjectEventProxy, bool) {
+	pxy, err := s.BindingSet.ProxyFor(key)
+	return (*ObjectEventProxy)(pxy), err
+}
+
+type ObjectEventProxy _bindings.Proxy
+
+func (p *ObjectEventProxy) OnOpen(s _zx.Status,info *ObjectInfo) error {
+	event_ := ObjectOnOpenResponse{
+		S: s,
+		Info: info,
+	}
+	return ((*_bindings.Proxy)(p)).Send(2147483655, &event_)
+}
+
+
+
+// Request for Sync.
+type NodeSyncRequest struct {
+}
+
+// Implements Payload.
+func (_ *NodeSyncRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeSyncRequest) InlineSize() int {
+	return 0
+}
+// Response for Sync.
+type NodeSyncResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *NodeSyncResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeSyncResponse) InlineSize() int {
+	return 4
+}
+// Request for GetAttr.
+type NodeGetAttrRequest struct {
+}
+
+// Implements Payload.
+func (_ *NodeGetAttrRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeGetAttrRequest) InlineSize() int {
+	return 0
+}
+// Response for GetAttr.
+type NodeGetAttrResponse struct {
+	S _zx.Status 
+	Attributes NodeAttributes 
+}
+
+// Implements Payload.
+func (_ *NodeGetAttrResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeGetAttrResponse) InlineSize() int {
+	return 64
+}
+// Request for SetAttr.
+type NodeSetAttrRequest struct {
+	Flags uint32 
+	Attributes NodeAttributes 
+}
+
+// Implements Payload.
+func (_ *NodeSetAttrRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeSetAttrRequest) InlineSize() int {
+	return 64
+}
+// Response for SetAttr.
+type NodeSetAttrResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *NodeSetAttrResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeSetAttrResponse) InlineSize() int {
+	return 4
+}
+// Request for Ioctl.
+type NodeIoctlRequest struct {
+	Opcode uint32 
+	MaxOut uint64 
+	Handles []_zx.Handle `fidl:"2"`
+	In []uint8 `fidl:"8192"`
+}
+
+// Implements Payload.
+func (_ *NodeIoctlRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeIoctlRequest) InlineSize() int {
+	return 48
+}
+// Response for Ioctl.
+type NodeIoctlResponse struct {
+	S _zx.Status 
+	Handles []_zx.Handle `fidl:"2"`
+	Out []uint8 `fidl:"8192"`
+}
+
+// Implements Payload.
+func (_ *NodeIoctlResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *NodeIoctlResponse) InlineSize() int {
+	return 40
+}
+
+type NodeInterface _bindings.Proxy
+
+func (p *NodeInterface) Sync() (_zx.Status, error) {
+	req_ := NodeSyncRequest{
+	}
+	resp_ := NodeSyncResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2164260865, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *NodeInterface) GetAttr() (_zx.Status, NodeAttributes, error) {
+	req_ := NodeGetAttrRequest{
+	}
+	resp_ := NodeGetAttrResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2164260866, &req_, &resp_)
+	return resp_.S, resp_.Attributes, err
+}
+func (p *NodeInterface) SetAttr(flags uint32,attributes NodeAttributes) (_zx.Status, error) {
+	req_ := NodeSetAttrRequest{
+		Flags: flags,
+		Attributes: attributes,
+	}
+	resp_ := NodeSetAttrResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2164260867, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *NodeInterface) Ioctl(opcode uint32,maxOut uint64,handles []_zx.Handle,in []uint8) (_zx.Status, []_zx.Handle, []uint8, error) {
+	req_ := NodeIoctlRequest{
+		Opcode: opcode,
+		MaxOut: maxOut,
+		Handles: handles,
+		In: in,
+	}
+	resp_ := NodeIoctlResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2164260868, &req_, &resp_)
+	return resp_.S, resp_.Handles, resp_.Out, err
+}
+
+// Node server interface.
+type Node interface {
+	Clone(flags uint32,object ObjectInterfaceRequest) error
+	Close() (_zx.Status, error)
+	ListInterfaces() ([]string, error)
+	Bind(iface string) error
+	Describe() (ObjectInfo, error)
+	Sync() (_zx.Status, error)
+	GetAttr() (_zx.Status, NodeAttributes, error)
+	SetAttr(flags uint32,attributes NodeAttributes) (_zx.Status, error)
+	Ioctl(opcode uint32,maxOut uint64,handles []_zx.Handle,in []uint8) (_zx.Status, []_zx.Handle, []uint8, error)
+}
+
+type NodeInterfaceRequest _bindings.InterfaceRequest
+
+func NewNodeInterfaceRequest() (NodeInterfaceRequest, *NodeInterface, error) {
+	req, cli, err := _bindings.NewInterfaceRequest()
+	return NodeInterfaceRequest(req), (*NodeInterface)(cli), err
+}
+
+type NodeStub struct {
+	Impl Node
+}
+
+func (s *NodeStub) Dispatch(ord uint32, b_ []byte, h_ []_zx.Handle) (_bindings.Payload, error) {
+	switch ord {
+	case 2147483649:
+		in_ := ObjectCloneRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Clone(in_.Flags,in_.Object)
+		return nil, err_
+	case 2147483650:
+		in_ := ObjectCloseRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectCloseResponse{}
+		s, err_ := s.Impl.Close()
+		out_.S = s
+		return &out_, err_
+	case 2147483652:
+		in_ := ObjectListInterfacesRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectListInterfacesResponse{}
+		interfaces, err_ := s.Impl.ListInterfaces()
+		out_.Interfaces = interfaces
+		return &out_, err_
+	case 2147483653:
+		in_ := ObjectBindRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Bind(in_.Iface)
+		return nil, err_
+	case 2147483654:
+		in_ := ObjectDescribeRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectDescribeResponse{}
+		info, err_ := s.Impl.Describe()
+		out_.Info = info
+		return &out_, err_
+	case 2164260865:
+		in_ := NodeSyncRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeSyncResponse{}
+		s, err_ := s.Impl.Sync()
+		out_.S = s
+		return &out_, err_
+	case 2164260866:
+		in_ := NodeGetAttrRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeGetAttrResponse{}
+		s, attributes, err_ := s.Impl.GetAttr()
+		out_.S = s
+		out_.Attributes = attributes
+		return &out_, err_
+	case 2164260867:
+		in_ := NodeSetAttrRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeSetAttrResponse{}
+		s, err_ := s.Impl.SetAttr(in_.Flags,in_.Attributes)
+		out_.S = s
+		return &out_, err_
+	case 2164260868:
+		in_ := NodeIoctlRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeIoctlResponse{}
+		s, handles, out, err_ := s.Impl.Ioctl(in_.Opcode,in_.MaxOut,in_.Handles,in_.In)
+		out_.S = s
+		out_.Handles = handles
+		out_.Out = out
+		return &out_, err_
+	}
+	return nil, _bindings.ErrUnknownOrdinal
+}
+
+type NodeService struct {
+	_bindings.BindingSet
+}
+
+func (s *NodeService) Add(impl Node, c _zx.Channel, onError func(error)) (_bindings.BindingKey, error) {
+	return s.BindingSet.Add(&NodeStub{Impl: impl}, c, onError)
+}
+
+func (s *NodeService) EventProxyFor(key _bindings.BindingKey) (*NodeEventProxy, bool) {
+	pxy, err := s.BindingSet.ProxyFor(key)
+	return (*NodeEventProxy)(pxy), err
+}
+
+type NodeEventProxy _bindings.Proxy
+
+func (p *NodeEventProxy) OnOpen(s _zx.Status,info *ObjectInfo) error {
+	event_ := ObjectOnOpenResponse{
+		S: s,
+		Info: info,
+	}
+	return ((*_bindings.Proxy)(p)).Send(2147483655, &event_)
+}
+
+
+
+// Request for Read.
+type FileReadRequest struct {
+	Count uint64 
+}
+
+// Implements Payload.
+func (_ *FileReadRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileReadRequest) InlineSize() int {
+	return 8
+}
+// Response for Read.
+type FileReadResponse struct {
+	S _zx.Status 
+	Data []uint8 `fidl:"8192"`
+}
+
+// Implements Payload.
+func (_ *FileReadResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileReadResponse) InlineSize() int {
+	return 24
+}
+// Request for ReadAt.
+type FileReadAtRequest struct {
+	Count uint64 
+	Offset uint64 
+}
+
+// Implements Payload.
+func (_ *FileReadAtRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileReadAtRequest) InlineSize() int {
+	return 16
+}
+// Response for ReadAt.
+type FileReadAtResponse struct {
+	S _zx.Status 
+	Data []uint8 `fidl:"8192"`
+}
+
+// Implements Payload.
+func (_ *FileReadAtResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileReadAtResponse) InlineSize() int {
+	return 24
+}
+// Request for Write.
+type FileWriteRequest struct {
+	Data []uint8 `fidl:"8192"`
+}
+
+// Implements Payload.
+func (_ *FileWriteRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileWriteRequest) InlineSize() int {
+	return 16
+}
+// Response for Write.
+type FileWriteResponse struct {
+	S _zx.Status 
+	Actual uint64 
+}
+
+// Implements Payload.
+func (_ *FileWriteResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileWriteResponse) InlineSize() int {
+	return 16
+}
+// Request for WriteAt.
+type FileWriteAtRequest struct {
+	Data []uint8 `fidl:"8192"`
+	Offset uint64 
+}
+
+// Implements Payload.
+func (_ *FileWriteAtRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileWriteAtRequest) InlineSize() int {
+	return 24
+}
+// Response for WriteAt.
+type FileWriteAtResponse struct {
+	S _zx.Status 
+	Actual uint64 
+}
+
+// Implements Payload.
+func (_ *FileWriteAtResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileWriteAtResponse) InlineSize() int {
+	return 16
+}
+// Request for Seek.
+type FileSeekRequest struct {
+	Offset int64 
+	Start SeekOrigin 
+}
+
+// Implements Payload.
+func (_ *FileSeekRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileSeekRequest) InlineSize() int {
+	return 16
+}
+// Response for Seek.
+type FileSeekResponse struct {
+	S _zx.Status 
+	Offset uint64 
+}
+
+// Implements Payload.
+func (_ *FileSeekResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileSeekResponse) InlineSize() int {
+	return 16
+}
+// Request for Truncate.
+type FileTruncateRequest struct {
+	Length uint64 
+}
+
+// Implements Payload.
+func (_ *FileTruncateRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileTruncateRequest) InlineSize() int {
+	return 8
+}
+// Response for Truncate.
+type FileTruncateResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *FileTruncateResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileTruncateResponse) InlineSize() int {
+	return 4
+}
+// Request for GetFlags.
+type FileGetFlagsRequest struct {
+}
+
+// Implements Payload.
+func (_ *FileGetFlagsRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileGetFlagsRequest) InlineSize() int {
+	return 0
+}
+// Response for GetFlags.
+type FileGetFlagsResponse struct {
+	S _zx.Status 
+	Flags uint32 
+}
+
+// Implements Payload.
+func (_ *FileGetFlagsResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileGetFlagsResponse) InlineSize() int {
+	return 8
+}
+// Request for SetFlags.
+type FileSetFlagsRequest struct {
+	Flags uint32 
+}
+
+// Implements Payload.
+func (_ *FileSetFlagsRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileSetFlagsRequest) InlineSize() int {
+	return 4
+}
+// Response for SetFlags.
+type FileSetFlagsResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *FileSetFlagsResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileSetFlagsResponse) InlineSize() int {
+	return 4
+}
+// Request for GetVmo.
+type FileGetVmoRequest struct {
+	Flags uint32 
+}
+
+// Implements Payload.
+func (_ *FileGetVmoRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileGetVmoRequest) InlineSize() int {
+	return 4
+}
+// Response for GetVmo.
+type FileGetVmoResponse struct {
+	S _zx.Status 
+	Vmo _zx.VMO 
+}
+
+// Implements Payload.
+func (_ *FileGetVmoResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileGetVmoResponse) InlineSize() int {
+	return 8
+}
+// Request for GetVmoAt.
+type FileGetVmoAtRequest struct {
+	Flags uint32 
+	Offset uint64 
+	Length uint64 
+}
+
+// Implements Payload.
+func (_ *FileGetVmoAtRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileGetVmoAtRequest) InlineSize() int {
+	return 24
+}
+// Response for GetVmoAt.
+type FileGetVmoAtResponse struct {
+	S _zx.Status 
+	Vmo _zx.VMO 
+}
+
+// Implements Payload.
+func (_ *FileGetVmoAtResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *FileGetVmoAtResponse) InlineSize() int {
+	return 8
+}
+
+type FileInterface _bindings.Proxy
+
+func (p *FileInterface) Read(count uint64) (_zx.Status, []uint8, error) {
+	req_ := FileReadRequest{
+		Count: count,
+	}
+	resp_ := FileReadResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038081, &req_, &resp_)
+	return resp_.S, resp_.Data, err
+}
+func (p *FileInterface) ReadAt(count uint64,offset uint64) (_zx.Status, []uint8, error) {
+	req_ := FileReadAtRequest{
+		Count: count,
+		Offset: offset,
+	}
+	resp_ := FileReadAtResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038082, &req_, &resp_)
+	return resp_.S, resp_.Data, err
+}
+func (p *FileInterface) Write(data []uint8) (_zx.Status, uint64, error) {
+	req_ := FileWriteRequest{
+		Data: data,
+	}
+	resp_ := FileWriteResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038083, &req_, &resp_)
+	return resp_.S, resp_.Actual, err
+}
+func (p *FileInterface) WriteAt(data []uint8,offset uint64) (_zx.Status, uint64, error) {
+	req_ := FileWriteAtRequest{
+		Data: data,
+		Offset: offset,
+	}
+	resp_ := FileWriteAtResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038084, &req_, &resp_)
+	return resp_.S, resp_.Actual, err
+}
+func (p *FileInterface) Seek(offset int64,start SeekOrigin) (_zx.Status, uint64, error) {
+	req_ := FileSeekRequest{
+		Offset: offset,
+		Start: start,
+	}
+	resp_ := FileSeekResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038085, &req_, &resp_)
+	return resp_.S, resp_.Offset, err
+}
+func (p *FileInterface) Truncate(length uint64) (_zx.Status, error) {
+	req_ := FileTruncateRequest{
+		Length: length,
+	}
+	resp_ := FileTruncateResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038086, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *FileInterface) GetFlags() (_zx.Status, uint32, error) {
+	req_ := FileGetFlagsRequest{
+	}
+	resp_ := FileGetFlagsResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038087, &req_, &resp_)
+	return resp_.S, resp_.Flags, err
+}
+func (p *FileInterface) SetFlags(flags uint32) (_zx.Status, error) {
+	req_ := FileSetFlagsRequest{
+		Flags: flags,
+	}
+	resp_ := FileSetFlagsResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038088, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *FileInterface) GetVmo(flags uint32) (_zx.Status, _zx.VMO, error) {
+	req_ := FileGetVmoRequest{
+		Flags: flags,
+	}
+	resp_ := FileGetVmoResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038089, &req_, &resp_)
+	return resp_.S, resp_.Vmo, err
+}
+func (p *FileInterface) GetVmoAt(flags uint32,offset uint64,length uint64) (_zx.Status, _zx.VMO, error) {
+	req_ := FileGetVmoAtRequest{
+		Flags: flags,
+		Offset: offset,
+		Length: length,
+	}
+	resp_ := FileGetVmoAtResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2181038090, &req_, &resp_)
+	return resp_.S, resp_.Vmo, err
+}
+
+// File server interface.
+type File interface {
+	Clone(flags uint32,object ObjectInterfaceRequest) error
+	Close() (_zx.Status, error)
+	ListInterfaces() ([]string, error)
+	Bind(iface string) error
+	Describe() (ObjectInfo, error)
+	Sync() (_zx.Status, error)
+	GetAttr() (_zx.Status, NodeAttributes, error)
+	SetAttr(flags uint32,attributes NodeAttributes) (_zx.Status, error)
+	Ioctl(opcode uint32,maxOut uint64,handles []_zx.Handle,in []uint8) (_zx.Status, []_zx.Handle, []uint8, error)
+	Read(count uint64) (_zx.Status, []uint8, error)
+	ReadAt(count uint64,offset uint64) (_zx.Status, []uint8, error)
+	Write(data []uint8) (_zx.Status, uint64, error)
+	WriteAt(data []uint8,offset uint64) (_zx.Status, uint64, error)
+	Seek(offset int64,start SeekOrigin) (_zx.Status, uint64, error)
+	Truncate(length uint64) (_zx.Status, error)
+	GetFlags() (_zx.Status, uint32, error)
+	SetFlags(flags uint32) (_zx.Status, error)
+	GetVmo(flags uint32) (_zx.Status, _zx.VMO, error)
+	GetVmoAt(flags uint32,offset uint64,length uint64) (_zx.Status, _zx.VMO, error)
+}
+
+type FileInterfaceRequest _bindings.InterfaceRequest
+
+func NewFileInterfaceRequest() (FileInterfaceRequest, *FileInterface, error) {
+	req, cli, err := _bindings.NewInterfaceRequest()
+	return FileInterfaceRequest(req), (*FileInterface)(cli), err
+}
+
+type FileStub struct {
+	Impl File
+}
+
+func (s *FileStub) Dispatch(ord uint32, b_ []byte, h_ []_zx.Handle) (_bindings.Payload, error) {
+	switch ord {
+	case 2147483649:
+		in_ := ObjectCloneRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Clone(in_.Flags,in_.Object)
+		return nil, err_
+	case 2147483650:
+		in_ := ObjectCloseRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectCloseResponse{}
+		s, err_ := s.Impl.Close()
+		out_.S = s
+		return &out_, err_
+	case 2147483652:
+		in_ := ObjectListInterfacesRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectListInterfacesResponse{}
+		interfaces, err_ := s.Impl.ListInterfaces()
+		out_.Interfaces = interfaces
+		return &out_, err_
+	case 2147483653:
+		in_ := ObjectBindRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Bind(in_.Iface)
+		return nil, err_
+	case 2147483654:
+		in_ := ObjectDescribeRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectDescribeResponse{}
+		info, err_ := s.Impl.Describe()
+		out_.Info = info
+		return &out_, err_
+	case 2164260865:
+		in_ := NodeSyncRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeSyncResponse{}
+		s, err_ := s.Impl.Sync()
+		out_.S = s
+		return &out_, err_
+	case 2164260866:
+		in_ := NodeGetAttrRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeGetAttrResponse{}
+		s, attributes, err_ := s.Impl.GetAttr()
+		out_.S = s
+		out_.Attributes = attributes
+		return &out_, err_
+	case 2164260867:
+		in_ := NodeSetAttrRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeSetAttrResponse{}
+		s, err_ := s.Impl.SetAttr(in_.Flags,in_.Attributes)
+		out_.S = s
+		return &out_, err_
+	case 2164260868:
+		in_ := NodeIoctlRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeIoctlResponse{}
+		s, handles, out, err_ := s.Impl.Ioctl(in_.Opcode,in_.MaxOut,in_.Handles,in_.In)
+		out_.S = s
+		out_.Handles = handles
+		out_.Out = out
+		return &out_, err_
+	case 2181038081:
+		in_ := FileReadRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileReadResponse{}
+		s, data, err_ := s.Impl.Read(in_.Count)
+		out_.S = s
+		out_.Data = data
+		return &out_, err_
+	case 2181038082:
+		in_ := FileReadAtRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileReadAtResponse{}
+		s, data, err_ := s.Impl.ReadAt(in_.Count,in_.Offset)
+		out_.S = s
+		out_.Data = data
+		return &out_, err_
+	case 2181038083:
+		in_ := FileWriteRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileWriteResponse{}
+		s, actual, err_ := s.Impl.Write(in_.Data)
+		out_.S = s
+		out_.Actual = actual
+		return &out_, err_
+	case 2181038084:
+		in_ := FileWriteAtRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileWriteAtResponse{}
+		s, actual, err_ := s.Impl.WriteAt(in_.Data,in_.Offset)
+		out_.S = s
+		out_.Actual = actual
+		return &out_, err_
+	case 2181038085:
+		in_ := FileSeekRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileSeekResponse{}
+		s, offset, err_ := s.Impl.Seek(in_.Offset,in_.Start)
+		out_.S = s
+		out_.Offset = offset
+		return &out_, err_
+	case 2181038086:
+		in_ := FileTruncateRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileTruncateResponse{}
+		s, err_ := s.Impl.Truncate(in_.Length)
+		out_.S = s
+		return &out_, err_
+	case 2181038087:
+		in_ := FileGetFlagsRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileGetFlagsResponse{}
+		s, flags, err_ := s.Impl.GetFlags()
+		out_.S = s
+		out_.Flags = flags
+		return &out_, err_
+	case 2181038088:
+		in_ := FileSetFlagsRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileSetFlagsResponse{}
+		s, err_ := s.Impl.SetFlags(in_.Flags)
+		out_.S = s
+		return &out_, err_
+	case 2181038089:
+		in_ := FileGetVmoRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileGetVmoResponse{}
+		s, vmo, err_ := s.Impl.GetVmo(in_.Flags)
+		out_.S = s
+		out_.Vmo = vmo
+		return &out_, err_
+	case 2181038090:
+		in_ := FileGetVmoAtRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := FileGetVmoAtResponse{}
+		s, vmo, err_ := s.Impl.GetVmoAt(in_.Flags,in_.Offset,in_.Length)
+		out_.S = s
+		out_.Vmo = vmo
+		return &out_, err_
+	}
+	return nil, _bindings.ErrUnknownOrdinal
+}
+
+type FileService struct {
+	_bindings.BindingSet
+}
+
+func (s *FileService) Add(impl File, c _zx.Channel, onError func(error)) (_bindings.BindingKey, error) {
+	return s.BindingSet.Add(&FileStub{Impl: impl}, c, onError)
+}
+
+func (s *FileService) EventProxyFor(key _bindings.BindingKey) (*FileEventProxy, bool) {
+	pxy, err := s.BindingSet.ProxyFor(key)
+	return (*FileEventProxy)(pxy), err
+}
+
+type FileEventProxy _bindings.Proxy
+
+func (p *FileEventProxy) OnOpen(s _zx.Status,info *ObjectInfo) error {
+	event_ := ObjectOnOpenResponse{
+		S: s,
+		Info: info,
+	}
+	return ((*_bindings.Proxy)(p)).Send(2147483655, &event_)
+}
+
+
+
+// Request for Open.
+type DirectoryOpenRequest struct {
+	Flags uint32 
+	Mode uint32 
+	Path string 
+	Object ObjectInterfaceRequest 
+}
+
+// Implements Payload.
+func (_ *DirectoryOpenRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryOpenRequest) InlineSize() int {
+	return 32
+}
+// Open has no response.
+// Request for Unlink.
+type DirectoryUnlinkRequest struct {
+	Path string 
+}
+
+// Implements Payload.
+func (_ *DirectoryUnlinkRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryUnlinkRequest) InlineSize() int {
+	return 16
+}
+// Response for Unlink.
+type DirectoryUnlinkResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *DirectoryUnlinkResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryUnlinkResponse) InlineSize() int {
+	return 4
+}
+// Request for ReadDirents.
+type DirectoryReadDirentsRequest struct {
+	MaxOut uint64 
+}
+
+// Implements Payload.
+func (_ *DirectoryReadDirentsRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryReadDirentsRequest) InlineSize() int {
+	return 8
+}
+// Response for ReadDirents.
+type DirectoryReadDirentsResponse struct {
+	S _zx.Status 
+	Dirents []uint8 `fidl:"8192"`
+}
+
+// Implements Payload.
+func (_ *DirectoryReadDirentsResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryReadDirentsResponse) InlineSize() int {
+	return 24
+}
+// Request for Rewind.
+type DirectoryRewindRequest struct {
+}
+
+// Implements Payload.
+func (_ *DirectoryRewindRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryRewindRequest) InlineSize() int {
+	return 0
+}
+// Response for Rewind.
+type DirectoryRewindResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *DirectoryRewindResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryRewindResponse) InlineSize() int {
+	return 4
+}
+// Request for GetToken.
+type DirectoryGetTokenRequest struct {
+}
+
+// Implements Payload.
+func (_ *DirectoryGetTokenRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryGetTokenRequest) InlineSize() int {
+	return 0
+}
+// Response for GetToken.
+type DirectoryGetTokenResponse struct {
+	S _zx.Status 
+	Token _zx.Handle 
+}
+
+// Implements Payload.
+func (_ *DirectoryGetTokenResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryGetTokenResponse) InlineSize() int {
+	return 8
+}
+// Request for Rename.
+type DirectoryRenameRequest struct {
+	Src string 
+	DstParentToken _zx.Handle 
+	Dst string 
+}
+
+// Implements Payload.
+func (_ *DirectoryRenameRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryRenameRequest) InlineSize() int {
+	return 40
+}
+// Response for Rename.
+type DirectoryRenameResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *DirectoryRenameResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryRenameResponse) InlineSize() int {
+	return 4
+}
+// Request for Link.
+type DirectoryLinkRequest struct {
+	Src string 
+	DstParentToken _zx.Handle 
+	Dst string 
+}
+
+// Implements Payload.
+func (_ *DirectoryLinkRequest) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryLinkRequest) InlineSize() int {
+	return 40
+}
+// Response for Link.
+type DirectoryLinkResponse struct {
+	S _zx.Status 
+}
+
+// Implements Payload.
+func (_ *DirectoryLinkResponse) InlineAlignment() int {
+	return 0
+}
+
+// Implements Payload.
+func (_ *DirectoryLinkResponse) InlineSize() int {
+	return 4
+}
+
+type DirectoryInterface _bindings.Proxy
+
+func (p *DirectoryInterface) Open(flags uint32,mode uint32,path string,object ObjectInterfaceRequest) error {
+	req_ := DirectoryOpenRequest{
+		Flags: flags,
+		Mode: mode,
+		Path: path,
+		Object: object,
+	}
+	err := ((*_bindings.Proxy)(p)).Send(2197815297, &req_)
+	return err
+}
+func (p *DirectoryInterface) Unlink(path string) (_zx.Status, error) {
+	req_ := DirectoryUnlinkRequest{
+		Path: path,
+	}
+	resp_ := DirectoryUnlinkResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2197815298, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *DirectoryInterface) ReadDirents(maxOut uint64) (_zx.Status, []uint8, error) {
+	req_ := DirectoryReadDirentsRequest{
+		MaxOut: maxOut,
+	}
+	resp_ := DirectoryReadDirentsResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2197815299, &req_, &resp_)
+	return resp_.S, resp_.Dirents, err
+}
+func (p *DirectoryInterface) Rewind() (_zx.Status, error) {
+	req_ := DirectoryRewindRequest{
+	}
+	resp_ := DirectoryRewindResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2197815300, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *DirectoryInterface) GetToken() (_zx.Status, _zx.Handle, error) {
+	req_ := DirectoryGetTokenRequest{
+	}
+	resp_ := DirectoryGetTokenResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2197815301, &req_, &resp_)
+	return resp_.S, resp_.Token, err
+}
+func (p *DirectoryInterface) Rename(src string,dstParentToken _zx.Handle,dst string) (_zx.Status, error) {
+	req_ := DirectoryRenameRequest{
+		Src: src,
+		DstParentToken: dstParentToken,
+		Dst: dst,
+	}
+	resp_ := DirectoryRenameResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2197815302, &req_, &resp_)
+	return resp_.S, err
+}
+func (p *DirectoryInterface) Link(src string,dstParentToken _zx.Handle,dst string) (_zx.Status, error) {
+	req_ := DirectoryLinkRequest{
+		Src: src,
+		DstParentToken: dstParentToken,
+		Dst: dst,
+	}
+	resp_ := DirectoryLinkResponse{}
+	err := ((*_bindings.Proxy)(p)).Call(2197815303, &req_, &resp_)
+	return resp_.S, err
+}
+
+// Directory server interface.
+type Directory interface {
+	Clone(flags uint32,object ObjectInterfaceRequest) error
+	Close() (_zx.Status, error)
+	ListInterfaces() ([]string, error)
+	Bind(iface string) error
+	Describe() (ObjectInfo, error)
+	Sync() (_zx.Status, error)
+	GetAttr() (_zx.Status, NodeAttributes, error)
+	SetAttr(flags uint32,attributes NodeAttributes) (_zx.Status, error)
+	Ioctl(opcode uint32,maxOut uint64,handles []_zx.Handle,in []uint8) (_zx.Status, []_zx.Handle, []uint8, error)
+	Open(flags uint32,mode uint32,path string,object ObjectInterfaceRequest) error
+	Unlink(path string) (_zx.Status, error)
+	ReadDirents(maxOut uint64) (_zx.Status, []uint8, error)
+	Rewind() (_zx.Status, error)
+	GetToken() (_zx.Status, _zx.Handle, error)
+	Rename(src string,dstParentToken _zx.Handle,dst string) (_zx.Status, error)
+	Link(src string,dstParentToken _zx.Handle,dst string) (_zx.Status, error)
+}
+
+type DirectoryInterfaceRequest _bindings.InterfaceRequest
+
+func NewDirectoryInterfaceRequest() (DirectoryInterfaceRequest, *DirectoryInterface, error) {
+	req, cli, err := _bindings.NewInterfaceRequest()
+	return DirectoryInterfaceRequest(req), (*DirectoryInterface)(cli), err
+}
+
+type DirectoryStub struct {
+	Impl Directory
+}
+
+func (s *DirectoryStub) Dispatch(ord uint32, b_ []byte, h_ []_zx.Handle) (_bindings.Payload, error) {
+	switch ord {
+	case 2147483649:
+		in_ := ObjectCloneRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Clone(in_.Flags,in_.Object)
+		return nil, err_
+	case 2147483650:
+		in_ := ObjectCloseRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectCloseResponse{}
+		s, err_ := s.Impl.Close()
+		out_.S = s
+		return &out_, err_
+	case 2147483652:
+		in_ := ObjectListInterfacesRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectListInterfacesResponse{}
+		interfaces, err_ := s.Impl.ListInterfaces()
+		out_.Interfaces = interfaces
+		return &out_, err_
+	case 2147483653:
+		in_ := ObjectBindRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Bind(in_.Iface)
+		return nil, err_
+	case 2147483654:
+		in_ := ObjectDescribeRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := ObjectDescribeResponse{}
+		info, err_ := s.Impl.Describe()
+		out_.Info = info
+		return &out_, err_
+	case 2164260865:
+		in_ := NodeSyncRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeSyncResponse{}
+		s, err_ := s.Impl.Sync()
+		out_.S = s
+		return &out_, err_
+	case 2164260866:
+		in_ := NodeGetAttrRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeGetAttrResponse{}
+		s, attributes, err_ := s.Impl.GetAttr()
+		out_.S = s
+		out_.Attributes = attributes
+		return &out_, err_
+	case 2164260867:
+		in_ := NodeSetAttrRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeSetAttrResponse{}
+		s, err_ := s.Impl.SetAttr(in_.Flags,in_.Attributes)
+		out_.S = s
+		return &out_, err_
+	case 2164260868:
+		in_ := NodeIoctlRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := NodeIoctlResponse{}
+		s, handles, out, err_ := s.Impl.Ioctl(in_.Opcode,in_.MaxOut,in_.Handles,in_.In)
+		out_.S = s
+		out_.Handles = handles
+		out_.Out = out
+		return &out_, err_
+	case 2197815297:
+		in_ := DirectoryOpenRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		err_ := s.Impl.Open(in_.Flags,in_.Mode,in_.Path,in_.Object)
+		return nil, err_
+	case 2197815298:
+		in_ := DirectoryUnlinkRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := DirectoryUnlinkResponse{}
+		s, err_ := s.Impl.Unlink(in_.Path)
+		out_.S = s
+		return &out_, err_
+	case 2197815299:
+		in_ := DirectoryReadDirentsRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := DirectoryReadDirentsResponse{}
+		s, dirents, err_ := s.Impl.ReadDirents(in_.MaxOut)
+		out_.S = s
+		out_.Dirents = dirents
+		return &out_, err_
+	case 2197815300:
+		in_ := DirectoryRewindRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := DirectoryRewindResponse{}
+		s, err_ := s.Impl.Rewind()
+		out_.S = s
+		return &out_, err_
+	case 2197815301:
+		in_ := DirectoryGetTokenRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := DirectoryGetTokenResponse{}
+		s, token, err_ := s.Impl.GetToken()
+		out_.S = s
+		out_.Token = token
+		return &out_, err_
+	case 2197815302:
+		in_ := DirectoryRenameRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := DirectoryRenameResponse{}
+		s, err_ := s.Impl.Rename(in_.Src,in_.DstParentToken,in_.Dst)
+		out_.S = s
+		return &out_, err_
+	case 2197815303:
+		in_ := DirectoryLinkRequest{}
+		if err_ := _bindings.Unmarshal(b_, h_, &in_); err_ != nil {
+			return nil, err_
+		}
+		out_ := DirectoryLinkResponse{}
+		s, err_ := s.Impl.Link(in_.Src,in_.DstParentToken,in_.Dst)
+		out_.S = s
+		return &out_, err_
+	}
+	return nil, _bindings.ErrUnknownOrdinal
+}
+
+type DirectoryService struct {
+	_bindings.BindingSet
+}
+
+func (s *DirectoryService) Add(impl Directory, c _zx.Channel, onError func(error)) (_bindings.BindingKey, error) {
+	return s.BindingSet.Add(&DirectoryStub{Impl: impl}, c, onError)
+}
+
+func (s *DirectoryService) EventProxyFor(key _bindings.BindingKey) (*DirectoryEventProxy, bool) {
+	pxy, err := s.BindingSet.ProxyFor(key)
+	return (*DirectoryEventProxy)(pxy), err
+}
+
+type DirectoryEventProxy _bindings.Proxy
+
+func (p *DirectoryEventProxy) OnOpen(s _zx.Status,info *ObjectInfo) error {
+	event_ := ObjectOnOpenResponse{
+		S: s,
+		Info: info,
+	}
+	return ((*_bindings.Proxy)(p)).Send(2147483655, &event_)
+}
+