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

package com.google.common.flogger.backend;

import org.checkerframework.checker.nullness.compatqual.NullableDecl;
import com.google.common.flogger.MetadataKey;

public abstract class Metadata
{
    public static Metadata empty() {
        return Empty.INSTANCE;
    }
    
    public abstract int size();
    
    public abstract MetadataKey<?> getKey(final int p0);
    
    public abstract Object getValue(final int p0);
    
    @NullableDecl
    public abstract <T> T findValue(final MetadataKey<T> p0);
    
    private static final class Empty extends Metadata
    {
        static final Empty INSTANCE;
        
        @Override
        public int size() {
            return 0;
        }
        
        @Override
        public MetadataKey<?> getKey(final int n) {
            throw new IndexOutOfBoundsException("cannot read from empty metadata");
        }
        
        @Override
        public Object getValue(final int n) {
            throw new IndexOutOfBoundsException("cannot read from empty metadata");
        }
        
        @NullableDecl
        @Override
        public <T> T findValue(final MetadataKey<T> key) {
            return null;
        }
        
        static {
            INSTANCE = new Empty();
        }
    }
}
