private void setCurrent() throws XQException { // TODO: construct XQItemType properly..? if (position > 0 && position <= sequence.size()) { Object current = sequence.get(position - 1); if (current instanceof XQItem) { XQItem item = (XQItem) current; setCurrent(item.getItemType(), item.getObject()); } else if (current instanceof XQSequence) { XQSequence sequence = (XQSequence) current; if (!sequence.isOnItem()) { sequence.first(); } setCurrent(sequence.getItemType(), sequence); } else { setCurrent(XQUtils.getTypeForObject(xqFactory, current), current); } } else { setCurrent(null, null); } }