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

package com.google.protobuf;

import java.util.Map;
import java.io.IOException;

@CheckReturnValue
abstract class ExtensionSchema<T extends FieldSet.FieldDescriptorLite<T>>
{
    abstract boolean hasExtensions(final MessageLite prototype);
    
    abstract FieldSet<T> getExtensions(final Object message);
    
    abstract void setExtensions(final Object message, final FieldSet<T> extensions);
    
    abstract FieldSet<T> getMutableExtensions(final Object message);
    
    abstract void makeImmutable(final Object message);
    
    abstract <UT, UB> UB parseExtension(final Object containerMessage, final Reader reader, final Object extension, final ExtensionRegistryLite extensionRegistry, final FieldSet<T> extensions, final UB unknownFields, final UnknownFieldSchema<UT, UB> unknownFieldSchema) throws IOException;
    
    abstract int extensionNumber(final Map.Entry<?, ?> extension);
    
    abstract void serializeExtension(final Writer writer, final Map.Entry<?, ?> extension) throws IOException;
    
    abstract Object findExtensionByNumber(final ExtensionRegistryLite extensionRegistry, final MessageLite defaultInstance, final int number);
    
    abstract void parseLengthPrefixedMessageSetItem(final Reader reader, final Object extension, final ExtensionRegistryLite extensionRegistry, final FieldSet<T> extensions) throws IOException;
    
    abstract void parseMessageSetItem(final ByteString data, final Object extension, final ExtensionRegistryLite extensionRegistry, final FieldSet<T> extensions) throws IOException;
}
