code: public Val nextValue() throws IOException {
        switch (peek()) {
           case BEGIN_ARRAY:
              return Val.of(nextCollection(ArrayList::new));
           case BEGIN_OBJECT:
              return Val.of(nextMap());
           case NAME:
              return nextKeyValue().getV2();
           default:
              return nextSimpleValue();
        }
     }
docs: Reads the next value
  
  @return The next value
  @throws IOException Something went wrong reading