@Override public <T> T evaluate(Exchange exchange, Class<T> type) { if (evaluateCalled) { throw new IllegalStateException("evaluate() can only be called once"); } evaluateCalled = true; String[] parts = getContent(exchange).split(","); return type.cast(new OneTimeUsageIterable<>(Arrays.asList(parts))); }