docs: @Override
      public List<Writable> next() {
          List<String> next = dataIter.next();
          invokeListeners(next);
          List<Writable> ret = new ArrayList<>();
          for (String s : next)
              ret.add(new Text(s));
          return ret;
      }
  
      /**
       * Check whether there are anymore records
       *
       * @return Whether there are more records
       */
      @Override
      public boolean hasNext() {
          return dataIter.hasNext();
      }
  
      /**
       * List of label strings
       *
       * @return
       */
      @Override
      public List<String> getLabels() {
          return null;
      }
  
      /**
       * Reset record reader iterator
       *
       */
      @Override
      public void reset() {
          dataIter = delimitedData.iterator();
      }
  
      @Override
      public boolean resetSupported() {
          return true;
      }
  
      /**
       * Load the record from the given DataInputStream
       * Unlike {@link #next()} the internal state of the RecordReader is not modified
       * Implementations of this method should not close the DataInputStream
       *
       * @param uri
       * @param dataInputStream
       * @throws IOException if error occurs during reading from the input stream
       */
      @Override
      public List<Writable> record(URI uri, DataInputStream dataInputStream) throws IOException {
          return null;
      }
  
      @Override
      public Record nextRecord() {
          return new org.datavec.api.records.impl.Record(next(), null);
      }
  
      @Override
      public Record loadFromMetaData(RecordMetaData recordMetaData) throws IOException {
          throw new UnsupportedOperationException("Loading from metadata not yet implemented");
      }
  
      @Override
      public List<Record> loadFromMetaData(List<RecordMetaData> recordMetaDatas) throws IOException {
          throw new UnsupportedOperationException("Loading from metadata not yet implemented");
      }
  
      /**
       * Closes this stream and releases any system resources associated
       * with it. If the stream is already closed then invoking this
       * method has no effect.
       * <p>
       * <p> As noted in {@link AutoCloseable#close()}, cases where the
       * close may fail require careful attention. It is strongly advised
       * to relinquish the underlying resources and to internally
       * <em>mark</em> the {@code Closeable} as closed, prior to throwing
       * the {@code IOException}.
       *
       * @throws IOException if an I/O error occurs
       */
      @Override
      public void close() throws IOException {
  
      }
  
      /**
       * Set the configuration to be used by this object.
       *
       * @param conf
       */
      @Override
      public void setConf(Configuration conf) {
          this.conf = conf;
      }
  
      /**
       * Return the configuration used by this object.
       */
      @Override
      public Configuration getConf() {
          return conf;
      }