package engine

// DemoError makes the interface's dynamic type visible without a nil dereference.
type DemoError struct{ Message string }

func (e *DemoError) Error() string {
	if e == nil {
		return "nil *DemoError inside a non-nil interface"
	}
	return e.Message
}
func TypedNilExample() (pointerNil bool, interfaceNil bool) {
	var concrete *DemoError = nil
	var err error = concrete
	return concrete == nil, err == nil
}
func SliceOwnershipExample() (original []int, view []int, copied []int) {
	original = []int{10, 20, 30}
	view = original[:2]
	copied = append([]int(nil), view...)
	view[0] = 99
	return original, view, copied
}
