*
     * @param itemStates item state source iterator.
     * @return iterator over reference property states.
     */
    private Iterator filterReferenceProperties(Iterator itemStates) {
        return new FilterIterator(itemStates, new Predicate() {
            public boolean evaluate(Object object) {
                ItemState state = (ItemState) object;
                if (!state.isNode()) {
                    PropertyState prop = (PropertyState) state;
                    return prop.getType() == PropertyType.REFERENCE;