/// <summary>
        /// Tries to handle any linkage declarations
        /// </summary>
        /// <param name="trimmedLine">The line with leading/trailing whitespace removed.</param>
        /// <param name="lineNum">The current line number.</param>
        /// <param name="objFile">The basic object file that will be written to.</param>
        /// <returns>Returns true if a linkage directive was processed in this line. Otherwise, returns false.</returns>
        private bool TryHandlingLinkageDeclaration(string trimmedLine, int lineNum, BasicObjectFile objFile)
        {
            // tokenize the line;
            string[] tokens       = trimmedLine.Split(' ');
            bool     isLinkageDec = false;

            if (IsLinkageDeclaration(tokens[0]))
            {
                isLinkageDec = true;

                // we expect three tokens,
                if (tokens[0] == ".extern")
                {
                    int declarationSize = 0;
                    if (tokens.Length != 3)
                    {
                        throw new AssemblyException(lineNum, "Expected symbol name and byte size declaration after .extern token.");
                    }
                    else if (!int.TryParse(tokens[2], out declarationSize))
                    {
                        throw new AssemblyException(lineNum, ".extern requires a non-negative 32-bit integer size.");
                    }
                    else if (declarationSize < 0)
                    {
                        throw new AssemblyException(lineNum, ".extern requires a non-negative 32-bit integer size.");
                    }
                    else
                    {
                        objFile.AddExternElement(declarationSize);
                    }
                }
            }

            return(isLinkageDec);
        }