func (_this *CharacterData) NextElementSibling() *Element {
	var ret *Element
	value := _this.Value_JS.Get("nextElementSibling")
	if value.Type() != js.TypeNull && value.Type() != js.TypeUndefined {
		ret = ElementFromJS(value)
	}
	return ret
}
NextElementSibling returning attribute 'nextElementSibling' with
type Element (idl: Element).
package dom
import "syscall/js"
import (
	"github.com/gowebapi/webapi/css/animations/webani"
	"github.com/gowebapi/webapi/css/cssom"
	"github.com/gowebapi/webapi/css/cssom/view"
	"github.com/gowebapi/webapi/css/typedom"
	"github.com/gowebapi/webapi/dom/domcore"
	"github.com/gowebapi/webapi/dom/geometry"
	"github.com/gowebapi/webapi/javascript"
)
func unused(value interface{}) {
}
type Union struct {
	Value js.Value
}
func (u *Union) JSValue() js.Value {
	return u.Value
}
func UnionFromJS(value js.Value) *Union {
	return &Union{Value: value}
}
type FragmentFilter int
const (
	DirectFragmentsOnlyFragmentFilter FragmentFilter = iota
	FragmentHierarchyFragmentFilter
)
var fragmentFilterToWasmTable = []string{
	"direct-fragments-only", "fragment-hierarchy",
}
var fragmentFilterFromWasmTable = map[string]FragmentFilter{
	"direct-fragments-only": DirectFragmentsOnlyFragmentFilter, "fragment-hierarchy": FragmentHierarchyFragmentFilter,
}
func (this *FragmentFilter) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this FragmentFilter) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(fragmentFilterToWasmTable) {
		return fragmentFilterToWasmTable[idx]
	}
	panic("unknown input value")
}
func FragmentFilterFromJS(value js.Value) FragmentFilter {
	key := value.String()
	conv, ok := fragmentFilterFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type FullscreenNavigationUI int
const (
	AutoFullscreenNavigationUI FullscreenNavigationUI = iota
	ShowFullscreenNavigationUI
	HideFullscreenNavigationUI
)
var fullscreenNavigationUIToWasmTable = []string{
	"auto", "show", "hide",
}
var fullscreenNavigationUIFromWasmTable = map[string]FullscreenNavigationUI{
	"auto": AutoFullscreenNavigationUI, "show": ShowFullscreenNavigationUI, "hide": HideFullscreenNavigationUI,
}
func (this *FullscreenNavigationUI) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this FullscreenNavigationUI) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(fullscreenNavigationUIToWasmTable) {
		return fullscreenNavigationUIToWasmTable[idx]
	}
	panic("unknown input value")
}
func FullscreenNavigationUIFromJS(value js.Value) FullscreenNavigationUI {
	key := value.String()
	conv, ok := fullscreenNavigationUIFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type ShadowRootMode int
const (
	OpenShadowRootMode ShadowRootMode = iota
	ClosedShadowRootMode
)
var shadowRootModeToWasmTable = []string{
	"open", "closed",
}
var shadowRootModeFromWasmTable = map[string]ShadowRootMode{
	"open": OpenShadowRootMode, "closed": ClosedShadowRootMode,
}
func (this *ShadowRootMode) JSValue() js.Value {
	return js.ValueOf(this.Value())
}
func (this ShadowRootMode) Value() string {
	idx := int(this)
	if idx >= 0 && idx < len(shadowRootModeToWasmTable) {
		return shadowRootModeToWasmTable[idx]
	}
	panic("unknown input value")
}
func ShadowRootModeFromJS(value js.Value) ShadowRootMode {
	key := value.String()
	conv, ok := shadowRootModeFromWasmTable[key]
	if !ok {
		panic("unable to convert '" + key + "'")
	}
	return conv
}
type NodeListForEachFunc func(currentValue *Node, currentIndex int, listObj *NodeList)
type NodeListForEach js.Func
func NodeListForEachToJS(callback NodeListForEachFunc) *NodeListForEach {
	if callback == nil {
		return nil
	}
	ret := NodeListForEach(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *Node      
			_p1 int        
			_p2 *NodeList  
		)
		_p0 = NodeFromJS(args[0])
		_p1 = (args[1]).Int()
		_p2 = NodeListFromJS(args[2])
		callback(_p0, _p1, _p2)
		return nil
	}))
	return &ret
}
func NodeListForEachFromJS(_value js.Value) NodeListForEachFunc {
	return func(currentValue *Node, currentIndex int, listObj *NodeList) {
		var (
			_args [3]interface{}
			_end  int
		)
		_p0 := currentValue.JSValue()
		_args[0] = _p0
		_end++
		_p1 := currentIndex
		_args[1] = _p1
		_end++
		_p2 := listObj.JSValue()
		_args[2] = _p2
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type PromiseDeadFragmentInformationOnFulfilledFunc func(value *DeadFragmentInformation)
type PromiseDeadFragmentInformationOnFulfilled js.Func
func PromiseDeadFragmentInformationOnFulfilledToJS(callback PromiseDeadFragmentInformationOnFulfilledFunc) *PromiseDeadFragmentInformationOnFulfilled {
	if callback == nil {
		return nil
	}
	ret := PromiseDeadFragmentInformationOnFulfilled(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 *DeadFragmentInformation  
		)
		_p0 = DeadFragmentInformationFromJS(args[0])
		callback(_p0)
		return nil
	}))
	return &ret
}
func PromiseDeadFragmentInformationOnFulfilledFromJS(_value js.Value) PromiseDeadFragmentInformationOnFulfilledFunc {
	return func(value *DeadFragmentInformation) {
		var (
			_args [1]interface{}
			_end  int
		)
		_p0 := value.JSValue()
		_args[0] = _p0
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type PromiseDeadFragmentInformationOnRejectedFunc func(reason js.Value)
type PromiseDeadFragmentInformationOnRejected js.Func
func PromiseDeadFragmentInformationOnRejectedToJS(callback PromiseDeadFragmentInformationOnRejectedFunc) *PromiseDeadFragmentInformationOnRejected {
	if callback == nil {
		return nil
	}
	ret := PromiseDeadFragmentInformationOnRejected(js.FuncOf(func(this js.Value, args []js.Value) interface{} {
		var (
			_p0 js.Value  
		)
		_p0 = args[0]
		callback(_p0)
		return nil
	}))
	return &ret
}
func PromiseDeadFragmentInformationOnRejectedFromJS(_value js.Value) PromiseDeadFragmentInformationOnRejectedFunc {
	return func(reason js.Value) {
		var (
			_args [1]interface{}
			_end  int
		)
		_p0 := reason
		_args[0] = _p0
		_end++
		_value.Invoke(_args[0:_end]...)
		return
	}
}
type FullscreenOptions struct {
	NavigationUI FullscreenNavigationUI
}
func (_this *FullscreenOptions) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.NavigationUI.JSValue()
	out.Set("navigationUI", value0)
	return out
}
func FullscreenOptionsFromJS(value js.Wrapper) *FullscreenOptions {
	input := value.JSValue()
	var out FullscreenOptions
	var (
		value0 FullscreenNavigationUI  
	)
	value0 = FullscreenNavigationUIFromJS(input.Get("navigationUI"))
	out.NavigationUI = value0
	return &out
}
type GetRootNodeOptions struct {
	Composed bool
}
func (_this *GetRootNodeOptions) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Composed
	out.Set("composed", value0)
	return out
}
func GetRootNodeOptionsFromJS(value js.Wrapper) *GetRootNodeOptions {
	input := value.JSValue()
	var out GetRootNodeOptions
	var (
		value0 bool  
	)
	value0 = (input.Get("composed")).Bool()
	out.Composed = value0
	return &out
}
type NodeListEntryIteratorValue struct {
	Value []js.Value
	Done  bool
}
func (_this *NodeListEntryIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := js.Global().Get("Array").New(len(_this.Value))
	for __idx0, __seq_in0 := range _this.Value {
		__seq_out0 := __seq_in0
		value0.SetIndex(__idx0, __seq_out0)
	}
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func NodeListEntryIteratorValueFromJS(value js.Wrapper) *NodeListEntryIteratorValue {
	input := value.JSValue()
	var out NodeListEntryIteratorValue
	var (
		value0 []js.Value  
		value1 bool        
	)
	__length0 := input.Get("value").Length()
	__array0 := make([]js.Value, __length0, __length0)
	for __idx0 := 0; __idx0 < __length0; __idx0++ {
		var __seq_out0 js.Value
		__seq_in0 := input.Get("value").Index(__idx0)
		__seq_out0 = __seq_in0
		__array0[__idx0] = __seq_out0
	}
	value0 = __array0
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type NodeListKeyIteratorValue struct {
	Value uint
	Done  bool
}
func (_this *NodeListKeyIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Value
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func NodeListKeyIteratorValueFromJS(value js.Wrapper) *NodeListKeyIteratorValue {
	input := value.JSValue()
	var out NodeListKeyIteratorValue
	var (
		value0 uint  
		value1 bool  
	)
	value0 = (uint)((input.Get("value")).Int())
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type NodeListValueIteratorValue struct {
	Value *Node
	Done  bool
}
func (_this *NodeListValueIteratorValue) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Value.JSValue()
	out.Set("value", value0)
	value1 := _this.Done
	out.Set("done", value1)
	return out
}
func NodeListValueIteratorValueFromJS(value js.Wrapper) *NodeListValueIteratorValue {
	input := value.JSValue()
	var out NodeListValueIteratorValue
	var (
		value0 *Node  
		value1 bool   
	)
	value0 = NodeFromJS(input.Get("value"))
	out.Value = value0
	value1 = (input.Get("done")).Bool()
	out.Done = value1
	return &out
}
type ShadowRootInit struct {
	Mode ShadowRootMode
}
func (_this *ShadowRootInit) JSValue() js.Value {
	out := js.Global().Get("Object").New()
	value0 := _this.Mode.JSValue()
	out.Set("mode", value0)
	return out
}
func ShadowRootInitFromJS(value js.Wrapper) *ShadowRootInit {
	input := value.JSValue()
	var out ShadowRootInit
	var (
		value0 ShadowRootMode  
	)
	value0 = ShadowRootModeFromJS(input.Get("mode"))
	out.Mode = value0
	return &out
}
type AbstractRange struct {
	Value_JS js.Value
}
func (_this *AbstractRange) JSValue() js.Value {
	return _this.Value_JS
}
func AbstractRangeFromJS(value js.Wrapper) *AbstractRange {
	input := value.JSValue()
	if typ := input.Type(); typ == js.TypeNull || typ == js.TypeUndefined {
		return nil
	}
	ret := &AbstractRange{}
	ret.Value_JS = input
	return ret
}
func (_this *AbstractRange) StartContainer() *Node {
	var ret *Node
	value := _this.Value_JS.Get("startContainer")
	ret = NodeFromJS(value)
	return ret
}
func (_this *AbstractRange) StartOffset() uint {
	var ret uint
	value := _this.Value_JS.Get("startOffset")
	ret = (uint)((value).Int())
	return ret
}
func (_this *AbstractRange) EndContainer() *Node {
	var ret *Node
	value := _this.Value_JS.Get("endContainer")
	ret = NodeFromJS(value)
	return ret
}
func (_this *AbstractRange) EndOffset() uint {
	var ret uint
	value := _this.Value_JS.Get("endOffset")
	ret = (uint)((value).Int())
	return ret
}
func (_this *AbstractRange) Collapsed() bool {
	var ret bool
	value := _this.Value_JS.Get("collapsed")
	ret = (value).Bool()
	return ret
}
type Attr struct {
	Node
}
func AttrFromJS(value js.Wrapper) *Attr {
	input := value.JSValue()
	if typ := input.Type(); typ == js.TypeNull || typ == js.TypeUndefined {
		return nil
	}
	ret := &Attr{}
	ret.Value_JS = input
	return ret
}
func (_this *Attr) NamespaceURI() *string {
	var ret *string
	value := _this.Value_JS.Get("namespaceURI")
	if value.Type() != js.TypeNull && value.Type() != js.TypeUndefined {
		__tmp := (value).String()
		ret = &__tmp
	}
	return ret
}
func (_this *Attr) Prefix() *string {
	var ret *string
	value := _this.Value_JS.Get("prefix")
	if value.Type() != js.TypeNull && value.Type() != js.TypeUndefined {
		__tmp := (value).String()
		ret = &__tmp
	}
	return ret
}
func (_this *Attr) LocalName() string {
	var ret string
	value := _this.Value_JS.Get("localName")
	ret = (value).String()
	return ret
}
func (_this *Attr) Name() string {
	var ret string
	value := _this.Value_JS.Get("name")
	ret = (value).String()
	return ret
}
func (_this *Attr) Value() string {
	var ret string
	value := _this.Value_JS.Get("value")
	ret = (value).String()
	return ret
}
func (_this *Attr) SetValue(value string) {
	input := value
	_this.Value_JS.Set("value", input)
}
func (_this *Attr) OwnerElement() *Element {
	var ret *Element
	value := _this.Value_JS.Get("ownerElement")
	if value.Type() != js.TypeNull && value.Type() != js.TypeUndefined {
		ret = ElementFromJS(value)
	}
	return ret
}
func (_this *Attr) Specified() bool {
	var ret bool
	value := _this.Value_JS.Get("specified")
	ret = (value).Bool()
	return ret
}
type CDATASection struct {
	Text
}
func CDATASectionFromJS(value js.Wrapper) *CDATASection {
	input := value.JSValue()
	if typ := input.Type(); typ == js.TypeNull || typ == js.TypeUndefined {
		return nil
	}
	ret := &CDATASection{}
	ret.Value_JS = input
	return ret
}
type CharacterData struct {
	Node
}
func CharacterDataFromJS(value js.Wrapper) *CharacterData {
	input := value.JSValue()
	if typ := input.Type(); typ == js.TypeNull || typ == js.TypeUndefined {
		return nil
	}
	ret := &CharacterData{}
	ret.Value_JS = input
	return ret
}
func (_this *CharacterData) Data() string {
	var ret string
	value := _this.Value_JS.Get("data")
	ret = (value).String()
	return ret
}
func (_this *CharacterData) SetData(value string) {
	input := value
	_this.Value_JS.Set("data", input)
}
func (_this *CharacterData) Length() uint {
	var ret uint
	value := _this.Value_JS.Get("length")
	ret = (uint)((value).Int())
	return ret
}
func (_this *CharacterData) PreviousElementSibling() *Element {
	var ret *Element
	value := _this.Value_JS.Get("previousElementSibling")
	if value.Type() != js.TypeNull && value.Type() != js.TypeUndefined {
		ret = ElementFromJS(value)
	}
	return ret
}