code: protected void verifyBSONType(final String methodName, final BsonType requiredBsonType) {
          if (state == State.INITIAL || state == State.SCOPE_DOCUMENT || state == State.TYPE) {
              readBsonType();
          }
          if (state == State.NAME) {
              // ignore name
              skipName();
          }
          if (state != State.VALUE) {
              throwInvalidState(methodName, State.VALUE);
          }
          if (currentBsonType != requiredBsonType) {
              throw new BsonInvalidOperationException(format("%s can only be called when CurrentBSONType is %s, "
                                                             + "not when CurrentBSONType is %s.",
                                                             methodName, requiredBsonType, currentBsonType));
          }
      }
docs: Verifies the current state and BSONType of the reader.
  
  @param methodName       The name of the method calling this one.
  @param requiredBsonType The required BSON type.