as you say Consumer and Producer are internal interfaces. The value comes from having ConsumerIterator implementing it