@Override
	public void processEventCoalecent(LineageState state) {
		// we need to move linages from deme to demeLabel with
		// probablity q=1-p.
		assert demeLabel == state.getDemeCount() || demeLabel + 1 == state.getDemeCount();
		// need to do this for the rather odd case where we use this in the
		// first model. Since this model
		// will already have the "added" deme, hence the odd assert.
		if (demeLabel == state.getDemeCount())
			state.setCurrentDemeCount(state.getDemeCount() + 1);
		// System.out.println("SplitCount:"+state.getDemeCount());
		int n = state.getLineageSize(deme, 0);
		if (n > 0) {
			int m = binomial.generateBinomial(n, q);
			// System.out.println("Moving "+m+"\tlinages out of "+n );
			for (int i = 0; i < m; i++) {
				state.migrationEvent(deme, demeLabel, 0, 0.0);
				// System.out.println("State:"+state);
			}
		}
		if (!state.isSelection())
			return;

		n = state.getLineageSize(deme, 1);
		if (n > 0) {
			int m = binomial.generateBinomial(n, q);
			for (int i = 0; i < m; i++)
				state.migrationEvent(deme, demeLabel, 1, 0.0);
		}

	}