code: protected State getNextState() {
          switch (context.getContextType()) {
              case ARRAY:
              case DOCUMENT:
              case SCOPE_DOCUMENT:
                  return State.TYPE;
              case TOP_LEVEL:
                  return State.DONE;
              default:
                  throw new BSONException(format("Unexpected ContextType %s.", context.getContextType()));
          }
      }
docs: Returns the next {@code State} to transition to, based on the {@link org.bson.AbstractBsonReader.Context} of this reader.
  
  @return the next state