bson/src/main/org/bson/codecs/BsonDocumentCodec.java
protected BsonValue readValue(final BsonReader reader, final DecoderContext decoderContext) {
        return (BsonValue) bsonTypeCodecMap.get(reader.getCurrentBsonType()).decode(reader, decoderContext);
    }
protected BsonValue readValue(final BsonReader reader, final DecoderContext decoderContext) {
        return (BsonValue) bsonTypeCodecMap.get(reader.getCurrentBsonType()).decode(reader, decoderContext);
    }
This method may be overridden to change the behavior of reading the current value from the given {@code BsonReader}.  It is required
that the value be fully consumed before returning.

@param reader         the read to read the value from
@param decoderContext the context
@return the non-null value read from the reader