@Override
	public boolean mutate(Mutation.Type type) {
		switch (type) {
		case SWAP:
		case REPLICATE:
			return false;
		case REMOVE:
			Mutation.replaceExpr(this, expr);
			return true;
		case COPY_TREE:
			return Mutation.copyExprTree(this);
		case COPY:
			return unaryCopy();
		case CREATE_PARENT:
			Mutation.createExprParent(this);
			return true;
		default:
			throw new AssertionError();
		}
	}