@Override
      List<V> matches(T src, ProcessingContext context) {
        final List<V> vs1 = first.matches(src, context);
        final List<V> vs2 = next.matches(src, context);

        if (vs1 == null && vs2 == null) return null;

        final Set<V> result = new LinkedHashSet<>();
        if (vs1 != null) {
          result.addAll(vs1);
        }
        if (vs2 != null) {
          result.addAll(vs2);
        }
        return new ArrayList<>(result);
      }
@Override
      List<V> matches(T src, ProcessingContext context)