func (obj *Object) ListObject() *enigma.ListObject {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		return nil
	}
	return obj.data.listobject
}
ListObject of object
package enigmahandlers
import (
	"fmt"
	"sync"
	"github.com/hashicorp/go-multierror"
	"github.com/pkg/errors"
	"github.com/qlik-oss/enigma-go/v2"
	"github.com/qlik-oss/gopherciser/helpers"
)
type (
	ObjectType int
	HyperCube struct {
		*enigma.HyperCube
		Binned bool
	}
	objectData struct {
		properties    *enigma.GenericObjectProperties
		childlist     *enigma.ChildList
		children      *[]ObjChild
		listobject    *enigma.ListObject
		hypercube     *HyperCube
		treeDataPages []*enigma.NxTreeNode
	}
	Object struct {
		Handle int
		ID string
		Type ObjectType
		EnigmaObject interface{}
		closefuncs   []func() error
		data         *objectData
		lockData     sync.Mutex
	}
	ObjChild struct {
		ExternalReference struct {
			MasterID string `json:"masterId"`
			App      string `json:"app"`
			ViewID   string `json:"viewId"`
		} `json:"externalReference"`
		Label string `json:"label"`
		RefID string `json:"refId"`
		Type  string `json:"type"`
	}
	ObjectNotFound int
	ObjectIDNotFound string
)
const (
	ObjTypeApp ObjectType = iota
	ObjTypeSheet
	ObjTypeGenericObject
)
func (obj *Object) SetProperties(properties *enigma.GenericObjectProperties) {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		obj.data = &objectData{
			properties: properties,
		}
		return
	}
	obj.data.properties = properties
}
func (obj *Object) Properties() *enigma.GenericObjectProperties {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		return nil
	}
	return obj.data.properties
}
func (obj *Object) SetChildList(children *enigma.ChildList) {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		obj.data = &objectData{
			childlist: children,
		}
		return
	}
	obj.data.childlist = children
}
func (obj *Object) SetChildren(children *[]ObjChild) {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		obj.data = &objectData{
			children: children,
		}
		return
	}
	obj.data.children = children
}
func (obj *Object) ChildList() *enigma.ChildList {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		return nil
	}
	return obj.data.childlist
}
func (obj *Object) SetListObject(listobject *enigma.ListObject) {
	obj.lockData.Lock()
	defer obj.lockData.Unlock()
	if obj.data == nil {
		obj.data = &objectData{
			listobject: listobject,
		}
		return
	}
	obj.data.listobject = listobject
}