public static EffectTechnique Parse(BytecodeReader reader, BytecodeReader techniqueReader, ShaderVersion version)
        {
            var result     = new EffectTechnique(version);
            var nameOffset = techniqueReader.ReadUInt32();
            var nameReader = reader.CopyAtOffset((int)nameOffset);

            result.Name = nameReader.ReadString();
            var passCount       = techniqueReader.ReadUInt32();
            var annotationCount = techniqueReader.ReadUInt32();

            for (int i = 0; i < annotationCount; i++)
            {
                result.Annotations.Add(EffectAnnotation.Parse(reader, techniqueReader, version));
            }
            for (int i = 0; i < passCount; i++)
            {
                result.Passes.Add(EffectPass.Parse(reader, techniqueReader, version));
            }
            return(result);
        }