func (a *Atom) Equals(b *Atom) bool {
	if a == nil || b == nil {
		return a == nil && b == nil
	}
	if (a.Scalar == nil) != (b.Scalar == nil) {
		return false
	}
	if (a.List == nil) != (b.List == nil) {
		return false
	}
	if (a.Map == nil) != (b.Map == nil) {
		return false
	}
	switch {
	case a.Scalar != nil:
		return *a.Scalar == *b.Scalar
	case a.List != nil:
		return a.List.Equals(b.List)
	case a.Map != nil:
		return a.Map.Equals(b.Map)
	}
	return true
}
// Equals returns true iff the two Atoms are equal.
Equals returns true iff the two Atoms are equal.
// Equals returns true iff the two Atoms are equal .
func (a *Atom) Equals(b *Atom) bool {
	if a == nil || b == nil {
		return a == nil && b == nil
	}
	if (a.Scalar == nil) != (b.Scalar == nil) {
		return false
	}
	if (a.List == nil) != (b.List == nil) {
		return false
	}
	if (a.Map == nil) != (b.Map == nil) {
		return false
	}
	switch {
	case a.Scalar != nil:
		return *a.Scalar == *b.Scalar
	case a.List != nil:
		return a.List.Equals(b.List)
	case a.Map != nil:
		return a.Map.Equals(b.Map)
	}
	return true
}
func ( a * Atom ) Equals ( b * Atom ) bool { if a == nil || b == nil { return a == nil && b == nil } if ( a . Scalar == nil ) != ( b . Scalar == nil ) { return false } if ( a . List == nil ) != ( b . List == nil ) { return false } if ( a . Map == nil ) != ( b . Map == nil ) { return false } switch { case a . Scalar != nil : return * a . Scalar == * b . Scalar case a . List != nil : return a . List . Equals ( b . List ) case a . Map != nil : return a . Map . Equals ( b . Map ) } return true }
Equals returns true iff the two Atoms are equal.
Equals returns true iff the two Atoms are equal .