It also seems to me that a trace with multiple chains should just be a container for multiple traces, and the logic for individual chains should be in separate classes.