code: public SmileEnvelopeEvent getNextEvent() throws IOException
      {
          try {
              if (!_hasNextEvent()) {
                  return null;
              }
              final JsonNode node = mapper.readValue(parser, JsonNode.class);
              nextToken = null; // reset nextToken
  
              return new SmileEnvelopeEvent(node);
          }
          // make sure we don't return true for hasNextEvent after this
          catch (IOException e) {
              hasFailed = true;
              throw e;
          }
      }
docs: Extracts the next event in the stream.
  Note: Stream must be formatted as an array of (serialized) SmileEnvelopeEvents.
  
  @return nextEvent. return null if it reaches the end of the list
  @throws IOException if there's a parsing issue