public AvailableGroup getDifference(AvailableGroup group) {
		if (group == null)
			group = new AvailableGroup();
		Map<Integer, Integer> ret = new HashMap<>(items);
		for (Entry<Integer, Integer> ent : group.items.entrySet()) {
			int amnt = get(ret, ent.getKey());
			if (amnt < ent.getValue())
				continue;
			update(ret, ent.getKey(), -ent.getValue());
		}
		Map<Integer, Integer> tmp = new HashMap<>(group.items);
		for (Entry<Integer, Integer> ent : this.items.entrySet()) {
			int amnt = get(tmp, ent.getKey());
			if (amnt < ent.getValue())
				continue;
			update(tmp, ent.getKey(), -ent.getValue());
		}
		for (Entry<Integer, Integer> ent : tmp.entrySet()) {
			update(ret, ent.getKey(), -ent.getValue());
		}
		return new AvailableGroup(ret);
	}