package platform.client.a3d.osgi
{
   import _codec.commons.CodecA3DMatrix;
   import _codec.commons.CodecId;
   import _codec.commons.VectorCodecA3DMatrixLevel1;
   import _codec.commons.VectorCodecA3DMatrixLevel2;
   import _codec.commons.VectorCodecA3DMatrixLevel3;
   import _codec.commons.VectorCodecIdLevel1;
   import _codec.commons.VectorCodecIdLevel2;
   import _codec.commons.VectorCodecIdLevel3;
   import _codec.versions.version1.a3d.CodecA3D;
   import _codec.versions.version1.a3d.VectorCodecA3DLevel1;
   import _codec.versions.version1.a3d.VectorCodecA3DLevel2;
   import _codec.versions.version1.a3d.VectorCodecA3DLevel3;
   import _codec.versions.version1.a3d.geometry.CodecA3DGeometry;
   import _codec.versions.version1.a3d.geometry.CodecA3DIndexBuffer;
   import _codec.versions.version1.a3d.geometry.CodecA3DVertexBuffer;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DGeometryLevel1;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DGeometryLevel2;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DGeometryLevel3;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DIndexBufferLevel1;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DIndexBufferLevel2;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DIndexBufferLevel3;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DVertexBufferLevel1;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DVertexBufferLevel2;
   import _codec.versions.version1.a3d.geometry.VectorCodecA3DVertexBufferLevel3;
   import _codec.versions.version1.a3d.id.CodecParentId;
   import _codec.versions.version1.a3d.id.VectorCodecParentIdLevel1;
   import _codec.versions.version1.a3d.id.VectorCodecParentIdLevel2;
   import _codec.versions.version1.a3d.id.VectorCodecParentIdLevel3;
   import _codec.versions.version1.a3d.materials.CodecA3DImage;
   import _codec.versions.version1.a3d.materials.CodecA3DMap;
   import _codec.versions.version1.a3d.materials.CodecA3DMaterial;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DImageLevel1;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DImageLevel2;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DImageLevel3;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DMapLevel1;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DMapLevel2;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DMapLevel3;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DMaterialLevel1;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DMaterialLevel2;
   import _codec.versions.version1.a3d.materials.VectorCodecA3DMaterialLevel3;
   import _codec.versions.version1.a3d.objects.CodecA3DBox;
   import _codec.versions.version1.a3d.objects.CodecA3DObject;
   import _codec.versions.version1.a3d.objects.CodecA3DSurface;
   import _codec.versions.version1.a3d.objects.CodecA3DTransformation;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DBoxLevel1;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DBoxLevel2;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DBoxLevel3;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DObjectLevel1;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DObjectLevel2;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DObjectLevel3;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DSurfaceLevel1;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DSurfaceLevel2;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DSurfaceLevel3;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DTransformationLevel1;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DTransformationLevel2;
   import _codec.versions.version1.a3d.objects.VectorCodecA3DTransformationLevel3;
   import _codec.versions.version2.a3d.CodecA3D2;
   import _codec.versions.version2.a3d.VectorCodecA3D2Level1;
   import _codec.versions.version2.a3d.VectorCodecA3D2Level2;
   import _codec.versions.version2.a3d.VectorCodecA3D2Level3;
   import _codec.versions.version2.a3d.animation.CodecA3D2AnimationClip;
   import _codec.versions.version2.a3d.animation.CodecA3D2Keyframe;
   import _codec.versions.version2.a3d.animation.CodecA3D2Track;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2AnimationClipLevel1;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2AnimationClipLevel2;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2AnimationClipLevel3;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2KeyframeLevel1;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2KeyframeLevel2;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2KeyframeLevel3;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2TrackLevel1;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2TrackLevel2;
   import _codec.versions.version2.a3d.animation.VectorCodecA3D2TrackLevel3;
   import _codec.versions.version2.a3d.geometry.CodecA3D2IndexBuffer;
   import _codec.versions.version2.a3d.geometry.CodecA3D2VertexAttributes;
   import _codec.versions.version2.a3d.geometry.CodecA3D2VertexBuffer;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2IndexBufferLevel1;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2IndexBufferLevel2;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2IndexBufferLevel3;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2VertexAttributesLevel1;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2VertexAttributesLevel2;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2VertexAttributesLevel3;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2VertexBufferLevel1;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2VertexBufferLevel2;
   import _codec.versions.version2.a3d.geometry.VectorCodecA3D2VertexBufferLevel3;
   import _codec.versions.version2.a3d.materials.CodecA3D2CubeMap;
   import _codec.versions.version2.a3d.materials.CodecA3D2Image;
   import _codec.versions.version2.a3d.materials.CodecA3D2Map;
   import _codec.versions.version2.a3d.materials.CodecA3D2Material;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2CubeMapLevel1;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2CubeMapLevel2;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2CubeMapLevel3;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2ImageLevel1;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2ImageLevel2;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2ImageLevel3;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2MapLevel1;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2MapLevel2;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2MapLevel3;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2MaterialLevel1;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2MaterialLevel2;
   import _codec.versions.version2.a3d.materials.VectorCodecA3D2MaterialLevel3;
   import _codec.versions.version2.a3d.objects.CodecA3D2AmbientLight;
   import _codec.versions.version2.a3d.objects.CodecA3D2Box;
   import _codec.versions.version2.a3d.objects.CodecA3D2Decal;
   import _codec.versions.version2.a3d.objects.CodecA3D2DirectionalLight;
   import _codec.versions.version2.a3d.objects.CodecA3D2Joint;
   import _codec.versions.version2.a3d.objects.CodecA3D2JointBindTransform;
   import _codec.versions.version2.a3d.objects.CodecA3D2Mesh;
   import _codec.versions.version2.a3d.objects.CodecA3D2Object;
   import _codec.versions.version2.a3d.objects.CodecA3D2OmniLight;
   import _codec.versions.version2.a3d.objects.CodecA3D2Skin;
   import _codec.versions.version2.a3d.objects.CodecA3D2SpotLight;
   import _codec.versions.version2.a3d.objects.CodecA3D2Sprite;
   import _codec.versions.version2.a3d.objects.CodecA3D2Surface;
   import _codec.versions.version2.a3d.objects.CodecA3D2Transform;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2AmbientLightLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2AmbientLightLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2AmbientLightLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2BoxLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2BoxLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2BoxLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2DecalLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2DecalLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2DecalLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2DirectionalLightLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2DirectionalLightLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2DirectionalLightLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2JointBindTransformLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2JointBindTransformLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2JointBindTransformLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2JointLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2JointLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2JointLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2MeshLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2MeshLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2MeshLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2ObjectLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2ObjectLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2ObjectLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2OmniLightLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2OmniLightLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2OmniLightLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SkinLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SkinLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SkinLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SpotLightLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SpotLightLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SpotLightLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SpriteLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SpriteLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SpriteLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SurfaceLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SurfaceLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2SurfaceLevel3;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2TransformLevel1;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2TransformLevel2;
   import _codec.versions.version2.a3d.objects.VectorCodecA3D2TransformLevel3;
   import alternativa.osgi.OSGi;
   import alternativa.osgi.bundle.IBundleActivator;
   import alternativa.protocol.ICodec;
   import alternativa.protocol.IProtocol;
   import alternativa.protocol.codec.OptionalCodecDecorator;
   import alternativa.protocol.info.CollectionCodecInfo;
   import alternativa.protocol.info.EnumCodecInfo;
   import alternativa.protocol.info.TypeCodecInfo;
   import commons.A3DMatrix;
   import commons.Id;
   import versions.version1.a3d.A3D;
   import versions.version1.a3d.geometry.A3DGeometry;
   import versions.version1.a3d.geometry.A3DIndexBuffer;
   import versions.version1.a3d.geometry.A3DVertexBuffer;
   import versions.version1.a3d.id.ParentId;
   import versions.version1.a3d.materials.A3DImage;
   import versions.version1.a3d.materials.A3DMap;
   import versions.version1.a3d.materials.A3DMaterial;
   import versions.version1.a3d.objects.A3DBox;
   import versions.version1.a3d.objects.A3DObject;
   import versions.version1.a3d.objects.A3DSurface;
   import versions.version1.a3d.objects.A3DTransformation;
   import versions.version2.a3d.A3D2;
   import versions.version2.a3d.animation.A3D2AnimationClip;
   import versions.version2.a3d.animation.A3D2Keyframe;
   import versions.version2.a3d.animation.A3D2Track;
   import versions.version2.a3d.geometry.A3D2IndexBuffer;
   import versions.version2.a3d.geometry.A3D2VertexAttributes;
   import versions.version2.a3d.geometry.A3D2VertexBuffer;
   import versions.version2.a3d.materials.A3D2CubeMap;
   import versions.version2.a3d.materials.A3D2Image;
   import versions.version2.a3d.materials.A3D2Map;
   import versions.version2.a3d.materials.A3D2Material;
   import versions.version2.a3d.objects.A3D2AmbientLight;
   import versions.version2.a3d.objects.A3D2Box;
   import versions.version2.a3d.objects.A3D2Decal;
   import versions.version2.a3d.objects.A3D2DirectionalLight;
   import versions.version2.a3d.objects.A3D2Joint;
   import versions.version2.a3d.objects.A3D2JointBindTransform;
   import versions.version2.a3d.objects.A3D2Mesh;
   import versions.version2.a3d.objects.A3D2Object;
   import versions.version2.a3d.objects.A3D2OmniLight;
   import versions.version2.a3d.objects.A3D2Skin;
   import versions.version2.a3d.objects.A3D2SpotLight;
   import versions.version2.a3d.objects.A3D2Sprite;
   import versions.version2.a3d.objects.A3D2Surface;
   import versions.version2.a3d.objects.A3D2Transform;
   
   public class Activator implements IBundleActivator
   {
      public static var osgi:OSGi;
      
      public function Activator()
      {
         super();
      }
      
      public function start(_osgi:OSGi) : void
      {
         var codec:ICodec = null;
         osgi = _osgi;
         var protocol:IProtocol = IProtocol(osgi.getService(IProtocol));
         codec = new CodecA3DImage();
         protocol.registerCodec(new TypeCodecInfo(A3DImage,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DImage,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DVertexBuffer();
         protocol.registerCodec(new TypeCodecInfo(A3DVertexBuffer,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DVertexBuffer,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DGeometry();
         protocol.registerCodec(new TypeCodecInfo(A3DGeometry,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DGeometry,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2AmbientLight();
         protocol.registerCodec(new TypeCodecInfo(A3D2AmbientLight,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2AmbientLight,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2VertexBuffer();
         protocol.registerCodec(new TypeCodecInfo(A3D2VertexBuffer,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2VertexBuffer,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Object();
         protocol.registerCodec(new TypeCodecInfo(A3D2Object,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Object,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2IndexBuffer();
         protocol.registerCodec(new TypeCodecInfo(A3D2IndexBuffer,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2IndexBuffer,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2SpotLight();
         protocol.registerCodec(new TypeCodecInfo(A3D2SpotLight,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2SpotLight,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2();
         protocol.registerCodec(new TypeCodecInfo(A3D2,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DSurface();
         protocol.registerCodec(new TypeCodecInfo(A3DSurface,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DSurface,true),new OptionalCodecDecorator(codec));
         codec = new CodecId();
         protocol.registerCodec(new TypeCodecInfo(Id,false),codec);
         protocol.registerCodec(new TypeCodecInfo(Id,true),new OptionalCodecDecorator(codec));
         codec = new CodecParentId();
         protocol.registerCodec(new TypeCodecInfo(ParentId,false),codec);
         protocol.registerCodec(new TypeCodecInfo(ParentId,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Map();
         protocol.registerCodec(new TypeCodecInfo(A3D2Map,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Map,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DIndexBuffer();
         protocol.registerCodec(new TypeCodecInfo(A3DIndexBuffer,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DIndexBuffer,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DMaterial();
         protocol.registerCodec(new TypeCodecInfo(A3DMaterial,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DMaterial,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2DirectionalLight();
         protocol.registerCodec(new TypeCodecInfo(A3D2DirectionalLight,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2DirectionalLight,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Image();
         protocol.registerCodec(new TypeCodecInfo(A3D2Image,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Image,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Material();
         protocol.registerCodec(new TypeCodecInfo(A3D2Material,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Material,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Sprite();
         protocol.registerCodec(new TypeCodecInfo(A3D2Sprite,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Sprite,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DMatrix();
         protocol.registerCodec(new TypeCodecInfo(A3DMatrix,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DMatrix,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Decal();
         protocol.registerCodec(new TypeCodecInfo(A3D2Decal,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Decal,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Box();
         protocol.registerCodec(new TypeCodecInfo(A3D2Box,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Box,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DObject();
         protocol.registerCodec(new TypeCodecInfo(A3DObject,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DObject,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Keyframe();
         protocol.registerCodec(new TypeCodecInfo(A3D2Keyframe,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Keyframe,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2OmniLight();
         protocol.registerCodec(new TypeCodecInfo(A3D2OmniLight,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2OmniLight,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Mesh();
         protocol.registerCodec(new TypeCodecInfo(A3D2Mesh,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Mesh,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Surface();
         protocol.registerCodec(new TypeCodecInfo(A3D2Surface,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Surface,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DBox();
         protocol.registerCodec(new TypeCodecInfo(A3DBox,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DBox,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2CubeMap();
         protocol.registerCodec(new TypeCodecInfo(A3D2CubeMap,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2CubeMap,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Transform();
         protocol.registerCodec(new TypeCodecInfo(A3D2Transform,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Transform,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Skin();
         protocol.registerCodec(new TypeCodecInfo(A3D2Skin,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Skin,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2JointBindTransform();
         protocol.registerCodec(new TypeCodecInfo(A3D2JointBindTransform,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2JointBindTransform,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Joint();
         protocol.registerCodec(new TypeCodecInfo(A3D2Joint,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Joint,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DTransformation();
         protocol.registerCodec(new TypeCodecInfo(A3DTransformation,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DTransformation,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2Track();
         protocol.registerCodec(new TypeCodecInfo(A3D2Track,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2Track,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2AnimationClip();
         protocol.registerCodec(new TypeCodecInfo(A3D2AnimationClip,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D2AnimationClip,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D();
         protocol.registerCodec(new TypeCodecInfo(A3D,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3D,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3D2VertexAttributes();
         protocol.registerCodec(new EnumCodecInfo(A3D2VertexAttributes,false),codec);
         protocol.registerCodec(new EnumCodecInfo(A3D2VertexAttributes,true),new OptionalCodecDecorator(codec));
         codec = new CodecA3DMap();
         protocol.registerCodec(new TypeCodecInfo(A3DMap,false),codec);
         protocol.registerCodec(new TypeCodecInfo(A3DMap,true),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DecalLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DecalLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DVertexBufferLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DVertexBufferLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DirectionalLightLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DirectionalLightLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DirectionalLightLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DirectionalLightLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointBindTransformLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointBindTransformLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DObjectLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DObjectLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2IndexBufferLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2IndexBufferLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexBufferLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexBufferLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DBoxLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DBoxLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMaterialLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMaterialLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2OmniLightLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2OmniLightLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MapLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MapLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DVertexBufferLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DVertexBufferLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2Level2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2Level2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AnimationClipLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AnimationClipLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexAttributesLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexAttributesLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DGeometryLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DGeometryLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SkinLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SkinLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2OmniLightLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2OmniLightLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecParentIdLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecParentIdLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MapLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MapLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecIdLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecIdLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DirectionalLightLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DirectionalLightLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2DirectionalLight,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MeshLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MeshLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DecalLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DecalLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MeshLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MeshLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MeshLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MeshLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Mesh,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DSurfaceLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DSurfaceLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMatrixLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMatrixLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2IndexBufferLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2IndexBufferLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SurfaceLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SurfaceLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Joint,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2BoxLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2BoxLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DTransformationLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DTransformationLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AnimationClipLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AnimationClipLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DTransformationLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DTransformationLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMatrixLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMatrixLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointBindTransformLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointBindTransformLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ObjectLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ObjectLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpriteLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpriteLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DBoxLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DBoxLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexBufferLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexBufferLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecParentIdLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecParentIdLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMaterialLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMaterialLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TrackLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TrackLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AmbientLightLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AmbientLightLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMapLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMapLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ImageLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ImageLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DGeometryLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DGeometryLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMapLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMapLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointBindTransformLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2JointBindTransformLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2JointBindTransform,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DSurfaceLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DSurfaceLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SurfaceLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SurfaceLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DIndexBufferLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DIndexBufferLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AnimationClipLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AnimationClipLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AnimationClip,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DIndexBufferLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DIndexBufferLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpotLightLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpotLightLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DVertexBufferLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DVertexBufferLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DVertexBuffer,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMapLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMapLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMap,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpotLightLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpotLightLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DecalLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2DecalLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Decal,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DBoxLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DBoxLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DBox,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ObjectLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ObjectLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TrackLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TrackLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2CubeMapLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2CubeMapLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DGeometryLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DGeometryLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DGeometry,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMatrixLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMatrixLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMatrix,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SkinLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SkinLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DImageLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DImageLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2OmniLightLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2OmniLightLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2OmniLight,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpotLightLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpotLightLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2SpotLight,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DImageLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DImageLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DSurfaceLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DSurfaceLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DSurface,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2KeyframeLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2KeyframeLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2IndexBufferLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2IndexBufferLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2IndexBuffer,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2KeyframeLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2KeyframeLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TransformLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TransformLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AmbientLightLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AmbientLightLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexAttributesLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexAttributesLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpriteLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpriteLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DImageLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DImageLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DImage,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DIndexBufferLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DIndexBufferLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DIndexBuffer,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexAttributesLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexAttributesLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new EnumCodecInfo(A3D2VertexAttributes,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2CubeMapLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2CubeMapLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2BoxLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2BoxLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2CubeMapLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2CubeMapLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2CubeMap,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SurfaceLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SurfaceLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Surface,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2BoxLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2BoxLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Box,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecParentIdLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecParentIdLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(ParentId,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ImageLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ImageLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TrackLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TrackLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Track,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DObjectLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DObjectLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MaterialLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MaterialLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TransformLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TransformLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SkinLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SkinLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Skin,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecIdLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecIdLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ObjectLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ObjectLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Object,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ImageLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2ImageLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Image,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMaterialLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DMaterialLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DMaterial,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpriteLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2SpriteLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Sprite,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MaterialLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MaterialLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DTransformationLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DTransformationLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DTransformation,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2KeyframeLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2KeyframeLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Keyframe,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecIdLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecIdLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(Id,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TransformLevel3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2TransformLevel3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Transform,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2Level3(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,false),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,false),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2Level3(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,true),false,3),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,true),true,3),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MapLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MapLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Map,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexBufferLevel2(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,false),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,false),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2VertexBufferLevel2(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,true),false,2),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2VertexBuffer,true),true,2),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MaterialLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2MaterialLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2Material,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DObjectLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3DObjectLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3DObject,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2Level1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2Level1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2,true),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AmbientLightLevel1(false);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,false),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,false),true,1),new OptionalCodecDecorator(codec));
         codec = new VectorCodecA3D2AmbientLightLevel1(true);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,true),false,1),codec);
         protocol.registerCodec(new CollectionCodecInfo(new TypeCodecInfo(A3D2AmbientLight,true),true,1),new OptionalCodecDecorator(codec));
      }
      
      public function stop(osgi:OSGi) : void
      {
      }
   }
}

