in reconstruct , no need to record good ones
move idBytes check to assert ,since these constructor is only called from db code path
refactor some code to CompoundMessage
add random ChatBuildMessage flat list funciton
fix some field not init bug
add test save ChatBuildMessage testcase
add a assert check
some testcase clean
Revert "in reconstruct , no need to record good ones"

we still needs good records, to avoid duplicated recursive

This reverts commit fd2b2e070c298d3dcfcc4c22ae236780de4d8f4c.
fix off by 1 bug
reorder reconstruct recursive method, to avoid longer than limit depth message
add load dependency performance test