/// <summary> /// Load program from ascii, bytecode or protected stream. /// </summary> /// <param name="stream">Program stream</param> /// <param name="rebuildLineNumber">Should rebuild line numbers</param> public void Load(Stream stream, bool rebuildLineNumber = true) { Erase(); var programMode = FindDocumentType(stream); Bytecode.WriteByte((byte)programMode); switch (programMode) { case ProgramMode.Binary: stream.CopyTo(Bytecode); break; case ProgramMode.Protected: _protected = AllowProtect; ProtectedProgramEncoder.Decode(stream).CopyTo(Bytecode); break; case ProgramMode.Ascii: Merge(stream); break; } if (rebuildLineNumber && programMode != ProgramMode.Ascii) { RebuildLineNumbers(); } }