// 
// Decompiled by Procyon v0.6.0
// 

package org.bson.codecs;

import org.bson.assertions.Assertions;
import org.bson.BsonReader;

public final class DecoderContext
{
    private static final DecoderContext DEFAULT_CONTEXT;
    private final boolean checkedDiscriminator;
    
    public boolean hasCheckedDiscriminator() {
        return this.checkedDiscriminator;
    }
    
    public static Builder builder() {
        return new Builder();
    }
    
    public <T> T decodeWithChildContext(final Decoder<T> decoder, final BsonReader reader) {
        Assertions.notNull("decoder", decoder);
        return decoder.decode(reader, DecoderContext.DEFAULT_CONTEXT);
    }
    
    private DecoderContext(final Builder builder) {
        this.checkedDiscriminator = builder.hasCheckedDiscriminator();
    }
    
    static {
        DEFAULT_CONTEXT = builder().build();
    }
    
    public static final class Builder
    {
        private boolean checkedDiscriminator;
        
        private Builder() {
        }
        
        public boolean hasCheckedDiscriminator() {
            return this.checkedDiscriminator;
        }
        
        public Builder checkedDiscriminator(final boolean checkedDiscriminator) {
            this.checkedDiscriminator = checkedDiscriminator;
            return this;
        }
        
        public DecoderContext build() {
            return new DecoderContext(this, null);
        }
    }
}
