code: protected BsonValue readValue(final BsonReader reader, final DecoderContext decoderContext) {
          return (BsonValue) bsonTypeCodecMap.get(reader.getCurrentBsonType()).decode(reader, decoderContext);
      }
docs: 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