@Override
    public void merge(I merger, I mergee) {
        Set<TKey<?, ?>> keys = mergee.getAvailableKeys();
        for (TKey key : keys) {
            if (filterKeys.contains(key)) {
                List<?> qvs = mergee.getQualifiedValues(key);
                merger.deleteValues(key);
                for (Object ob : qvs) {
                    QualifiedValue<?> qv = (QualifiedValue<?>) ob;
                    merger.addValue(key, qv.getValue(), qv.getQualifiers().toArray(new Enum[qv.getQualifiers().size()]));
                }
            }
        }
    }