/// <summary>
        /// Transforms each unit reference of the given <paramref name="unitReferenceSet"/> into a full qualified
        /// unit name.
        /// </summary>
        /// <param name="unitReferenceSet">Collection of unit references</param>
        /// <returns>Collection of full qualified unit names</returns>
        /// <exception cref="BuddyCompilerException">If a unit name could not be found</exception>
        private string[] ToQualifiedUnitNames(string[] unitReferenceSet)
        {
            if (unitReferenceSet == null)
            {
                return(new string[0]);
            }
            if (unitReferenceSet.Length == 0)
            {
                return(new string[0]);
            }

            IImportPathProvider importPathProvider = ImportPathProvider;

            string[] qualifiedUnitNames = new string[unitReferenceSet.Length];
            for (int i = -1; ++i != unitReferenceSet.Length;)
            {
                string   unitReference = unitReferenceSet[i].Replace('_', ' ');
                UnitName unitName      = importPathProvider.GetUnitName(unitReference);
                if (unitName == null)
                {
                    throw new BuddyCompilerException($"There is no unit registered for the given reference '{unitReference}'");
                }
                string qualifiedUnitName = unitName.ToQualifiedString();
                qualifiedUnitNames[i] = qualifiedUnitName;
            }

            return(qualifiedUnitNames);
        }
 /// <summary>
 /// Creates a new instance that operates with the given <paramref name="importPathProvider"/>.
 /// </summary>
 /// <param name="importPathProvider">Import path provider</param>
 /// <exception cref="ArgumentNullException">If <paramref name="importPathProvider"/> is NULL</exception>
 public UnitBundler(IImportPathProvider importPathProvider)
 {
     if (importPathProvider == null)
     {
         throw new ArgumentNullException("importPathProvider");
     }
     iImportPathProvider = importPathProvider;
 }
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 /// <exception cref="BuddyCompilerException"/>
 public BuddyCompiler()
 {
     try {
         _buddyTextProcessor    = new BuddyTextProcessor();
         _instructionTranslator = new InstructionTranslator();
         _importPathProvider    = NullImportPathProvider.Instance;
     } catch (Exception ex) {
         throw new BuddyCompilerException("Error on initializing Buddy Compiler", ex);
     }
 }