/// <summary>
        /// Loads macros from rewindable reader instance.
        /// </summary>
        /// <param name="rewinder">The instance to read data from.</param>
        private void Load(RewindableTextReader rewinder)
        {
            Helper.ThrowIfNull(rewinder);

            string line = null;
            while ((line = rewinder.ReadLine()) != null)
            {
                MacroName macro = MacroName.Create(line);
                switch (macro.Symbol)
                {
                    case "o":
                        LoadGlobalOptions(rewinder);
                        break;
                    case "v":
                        VarFloor var = new VarFloor()
                        {
                            Macro = macro,
                            Variance = ReadTagArray(rewinder, "<VARIANCE>"),
                        };

                        VarFloors.Add(var.Macro.Name, var);
                        break;
                    case "t":
                        Transition trans = new Transition()
                        {
                            Macro = macro,
                            Matrix = ReadTransition(rewinder),
                        };

                        Transitions.Add(trans.Macro.Name, trans);
                        break;
                    case "s":
                        HmmStream stream = ReadStream(rewinder);
                        stream.Name = macro.Name;
                        Streams.Add(macro.Name, stream);
                        break;
                    case "h":
                        HmmModel model = ReadModel(rewinder, Streams, Transitions);
                        model.Macro = macro;
                        Models.Add(macro.Name, model);
                        break;
                    default:
                        throw new InvalidDataException(Helper.NeutralFormat(
                            "Macro name [{0}] is not supported in line [{1}].", macro.Name, macro.Name));
                }
            }
        }
 /// <summary>
 /// Converts the transition instance into string in MMF format.
 /// </summary>
 /// <param name="transition">The transition instance to convert.</param>
 /// <returns>Transition instance in string format.</returns>
 private static string ToString(Transition transition)
 {
     Helper.ThrowIfNull(transition);
     return Helper.NeutralFormat("<TRANSP> {1}{0}{2}",
         Environment.NewLine, transition.Matrix.GetLength(0), ToString(transition.Matrix));
 }