code: func SizeOf(arr interface{}) int64 {
  	if arr == nil {
  		return 0
  	}
  	switch arr.(type) {
  	case []int64:
  		return AlignObjectSize(NUM_BYTES_ARRAY_HEADER + NUM_BYTES_LONG*int64(len(arr.([]int64))))
  	case []int16:
  		return AlignObjectSize(NUM_BYTES_ARRAY_HEADER + NUM_BYTES_SHORT*int64(len(arr.([]int16))))
  	case []byte:
  		return AlignObjectSize(NUM_BYTES_ARRAY_HEADER + int64(len(arr.([]byte))))
  	default:
  		if t := reflect.TypeOf(arr); t.Kind() == reflect.Slice {
  			var size int64
  			v := reflect.ValueOf(arr)
  			for i := 0; i < v.Len(); i++ {
  				size += v.Index(i).Interface().(Accountable).RamBytesUsed()
  			}
  			return size
  		}
  		fmt.Println("Unknown type:", reflect.TypeOf(arr))
  		panic("not supported yet")
  	}
  }
docs: /* Returns the size in bytes of the object. */