func (dl DecodingLayerSparse) Put(d DecodingLayer) DecodingLayerContainer {
	maxLayerType := LayerType(len(dl) - 1)
	for _, typ := range d.CanDecode().LayerTypes() {
		if typ > maxLayerType {
			maxLayerType = typ
		}
	}
	if extra := maxLayerType - LayerType(len(dl)) + 1; extra > 0 {
		dl = append(dl, make([]DecodingLayer, extra)...)
	}
	for _, typ := range d.CanDecode().LayerTypes() {
		dl[typ] = d
	}
	return dl
}
Put implements DecodingLayerContainer interface.
package gopacket
import (
	"fmt"
)
type decodingLayerElem struct {
	typ LayerType
	dec DecodingLayer
}
type DecodingLayer interface {
	DecodeFromBytes(data []byte, df DecodeFeedback) error
	CanDecode() LayerClass
	NextLayerType() LayerType
	LayerPayload() []byte
}
type DecodingLayerFunc func([]byte, *[]LayerType) (LayerType, error)
type DecodingLayerContainer interface {
	Put(DecodingLayer) DecodingLayerContainer
	Decoder(LayerType) (DecodingLayer, bool)
	LayersDecoder(first LayerType, df DecodeFeedback) DecodingLayerFunc
}
type DecodingLayerSparse []DecodingLayer