func (n Null) Equal(other ref.Val) ref.Val {
	if NullType != other.Type() {
		return ValOrErr(other, "no such overload")
	}
	return True
}
Equal implements ref.Val.Equal.
package types
import (
	"fmt"
	"reflect"
	"github.com/google/cel-go/common/types/ref"
	"google.golang.org/protobuf/proto"
	anypb "google.golang.org/protobuf/types/known/anypb"
	structpb "google.golang.org/protobuf/types/known/structpb"
)
type Null structpb.NullValue
var (
	NullType = NewTypeValue("null_type")
	NullValue = Null(structpb.NullValue_NULL_VALUE)
	jsonNullType = reflect.TypeOf(structpb.NullValue_NULL_VALUE)
)
func (n Null) ConvertToNative(typeDesc reflect.Type) (interface{}, error) {
	switch typeDesc.Kind() {
	case reflect.Int32:
		return reflect.ValueOf(n).Convert(typeDesc).Interface(), nil
	case reflect.Ptr:
		switch typeDesc {
		case anyValueType:
			pb, err := n.ConvertToNative(jsonValueType)
			if err != nil {
				return nil, err
			}
			return anypb.New(pb.(proto.Message))
		case jsonValueType:
			return structpb.NewNullValue(), nil
		}
	case reflect.Interface:
		nv := n.Value()
		if reflect.TypeOf(nv).Implements(typeDesc) {
			return nv, nil
		}
		if reflect.TypeOf(n).Implements(typeDesc) {
			return n, nil
		}
	}
	return nil, fmt.Errorf("type conversion error from '%v' to '%v'", NullType, typeDesc)
}
func (n Null) ConvertToType(typeVal ref.Type) ref.Val {
	switch typeVal {
	case StringType:
		return String("null")
	case NullType:
		return n
	case TypeType:
		return NullType
	}
	return NewErr("type conversion error from '%s' to '%s'", NullType, typeVal)
}