@SuppressWarnings("unchecked") public CloseableIterator<STMT> findStatements(@Nullable ID subject, @Nullable UID predicate, @Nullable NODE object, @Nullable UID context, boolean includeInferred) { Iterator<STMT> iterator = null; if (subject != null) { iterator = getIndexed(subject, predicate, subjects); } else if (objects != null && object != null && object.isResource()) { iterator = getIndexed(object.asResource(), predicate, objects); } else { List<Iterator<STMT>> iterators = Lists.newArrayList(); for (PredicateCache stmtCache : subjects.values()) { iterators.add(stmtCache.iterator(predicate)); } iterator = Iterators.concat(iterators.toArray(new Iterator[iterators.size()])); } return new ResultIterator(iterator, subject, predicate, object, context, includeInferred); }