class MultiReference implements Reference<E> {

    public Reference<E> narrow(Class<?> type) throws BindingException {
        List<Reference<E>> resulting = new ArrayList<Reference<E>>();
        for (Reference<E> reference :references) {
            Reference<E> result = reference.narrow(type);
            if (result != null) {
                resulting.add(result);
            }
        }
        if (resulting.size() == 0) {
            return null;
        } else {
            return new MultiReference<E>(resulting.toArray(REFERENCE_ARRAY_TYPE));
        }
    }

    public  MultiReference(Reference<E>... references);

}