code: public void nextItem() {
          moveToNext();
          if (currentItemIndex == -1) {
              return;
          }
          IPlayItem item = null;
          do {
              try {
                  PlayItemEntry entry = items.get(currentItemIndex);
                  if (entry != null) {
                      item = entry.item;
                      engine.play(item, false);
                      entry.played = true;
                      break;
                  }
              } catch (IOException err) {
                  log.warn("Error while starting to play item, moving to next", err);
                  // go for next item
                  moveToNext();
                  if (currentItemIndex == -1) {
                      // we reaches the end.
                      break;
                  }
              } catch (StreamNotFoundException e) {
                  // go for next item
                  moveToNext();
                  if (currentItemIndex == -1) {
                      // we reaches the end.
                      break;
                  }
              } catch (IllegalStateException e) {
                  // an stream is already playing
                  break;
              }
          } while (!items.isEmpty());
      }
docs: {@inheritDoc}