public boolean matches(ObjectTags itags) { if (itags == null) return false; for (EnumTag tag : tags.getAspects()) { if (itags.getAmount(tag) < tags.getAmount(tag)) return false; } return true; }
public ObjectTags removeMatching(ObjectTags itags) { ObjectTags temptags = new ObjectTags(); temptags.tags.putAll(itags.tags); for (EnumTag tag : tags.getAspects()) { if (!temptags.reduceAmount(tag, tags.getAmount(tag))) return null; } itags = temptags; return itags; }