for (T particle : distribution.getDomain()) {
final double particleWeight = distribution.getFraction(particle);
// stupid hack for a java bug
final Object pobj = particle;
Preconditions.checkState(pobj instanceof GaussianArHpTransitionState);
GaussianArHpTransitionState gParticle = (GaussianArHpTransitionState) pobj;
List<MultivariateGaussian> psis = gParticle.getPsiSS();
// FIXME TODO how to order/identify psis? sort by magnitude of offset?
int i = 0;
for (MultivariateGaussian psi : psis) {
stateMeans.get(i).accumulate(psi.getMean().scale(particleWeight));