title: Java Iterator implementation - next() and hasNext() enforcing order
body: <p>I have an implementation of <code>java.util.Iterator</code> which requires that the call to <code>next()</code> should always be proceeded by a call to <code>hasNext()</code>. (This is because results are returned asynchronosly in a multi threaded environment and it is never clear how many more results there might be).</p>
  
  <p>Would it be 'correct' to properly document this in the JavaDoc and then throw a <code>RuntimeException</code> if this was violated.  Or is this stretching the Iterator interface a little too far?</p>
  
  <p>All thoughts appreciated?</p>