code: public void exitBlock() {
          if (open == 0) {
              return;
          }
  
          if (open < 0) {
              throw new IllegalStateException("Parser is no longer nested in any blocks at the level in which it was " +
                      "created. You must create a new block aware parser to track the levels above this one.");
          }
  
          while (open > 0) {
              Token t = delegate.nextToken();
              if (t == null) {
                  // handle EOF?
                  return;
              }
              updateLevelBasedOn(t);
          }
      }
docs: If this parser is reading tokens from an object or an array that is nested below its original
  nesting level, it will consume and skip all tokens until it reaches the end of the block that
  it was created on. The underlying parser will be left on the END_X token for the block.