code: public void play() throws IOException {
          // Return if playlist is empty
          if (!items.isEmpty()) {
              // Move to next if current item is set to -1
              if (currentItemIndex == -1) {
                  moveToNext();
              }
              // If there's some more items on list then play current item
              do {
                  IPlayItem item = null;
                  try {
                      // Get playlist item
                      PlayItemEntry entry = items.get(currentItemIndex);
                      if (entry != null) {
                          item = entry.item;
                          engine.play(item);
                          entry.played = true;
                          break;
                      }
                  } catch (StreamNotFoundException e) {
                      // go for next item
                      moveToNext();
                      if (currentItemIndex == -1) {
                          // we reached the end
                          break;
                      }
                  } catch (IllegalStateException e) {
                      // an stream is already playing
                      break;
                  }
              } while (!items.isEmpty());
          }
      }
docs: {@inheritDoc}