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

package org.bouncycastle.oer;

import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1Encodable;

public abstract class SwitchIndexer
{
    public abstract ASN1Encodable get(final int p0);
    
    public static class Asn1EncodableVectorIndexer extends SwitchIndexer
    {
        private final ASN1EncodableVector asn1EncodableVector;
        
        public Asn1EncodableVectorIndexer(final ASN1EncodableVector asn1EncodableVector) {
            this.asn1EncodableVector = asn1EncodableVector;
        }
        
        @Override
        public ASN1Encodable get(final int n) {
            return this.asn1EncodableVector.get(n);
        }
    }
    
    public static class Asn1SequenceIndexer extends SwitchIndexer
    {
        private final ASN1Sequence sequence;
        
        public Asn1SequenceIndexer(final ASN1Sequence sequence) {
            this.sequence = sequence;
        }
        
        @Override
        public ASN1Encodable get(final int n) {
            return this.sequence.getObjectAt(n);
        }
    }
    
    public static class FixedValueIndexer extends SwitchIndexer
    {
        private final ASN1Encodable returnValue;
        
        public FixedValueIndexer(final ASN1Encodable returnValue) {
            this.returnValue = returnValue;
        }
        
        @Override
        public ASN1Encodable get(final int n) {
            return this.returnValue;
        }
    }
}
