code: func Equal(a1, a2 interface{}) bool {
  	if a1 == nil || a2 == nil {
  		return a1 == a2
  	}
  	v1 := reflect.ValueOf(a1)
  	v2 := reflect.ValueOf(a2)
  	if v1.Type() != v2.Type() {
  		return false
  	}
  	return deepValueEqual(v1, v2, make(map[visit]bool), 0)
  }
docs: // Equal is a copy of reflect.DeepEqual except that it treats NaN == NaN as true.