private void Merge(List<Library> targets, TempReference source)
        {
            foreach (var target in targets)
            {
                if (source.ReferenceFilename != null)
                    target.Paths.Add(source.ReferenceFilename);

                if (source.ReferenceName != null)
                    target.Names.Add(source.ReferenceName);

                if (source.ReferenceLibraryName != null)
                    target.LibraryNames.Add(source.ReferenceLibraryName);

                if (source.ReferenceLanguages != null)
                    target.Languages.AddRange(source.ReferenceLanguages);

                // Update DB

                if (target is Project && target.Paths.Any())
                    db.AddProject((Project) target);
                else
                    db.AddLibrary(target);
            }
        }
        private Project CreateFakeProject(Project proj, Dependency dep, TempReference reference)
        {
            var result = new Project(reference.ReferenceName ?? reference.ReferenceLibraryName,
                reference.ReferenceLibraryName ?? reference.ReferenceName, reference.ReferenceGuid ?? Guid.NewGuid(), reference.ReferenceFilename, null);

            if (Ignore(result))
                return null;

            if (reference.ReferenceName == null || reference.ReferenceLibraryName == null)
            {
                var guessed = reference.ReferenceName == null ? "project name" : "library name";
                var used = reference.ReferenceName == null ? "library name" : "project name";

                var msg = new OutputMessage().Append("The project ")
                    .Append(proj, OutputMessage.ProjInfo.Name)
                    .Append(" references the project ")
                    .Append(reference.ReferenceFilename ?? reference.ReferenceName ?? reference.ReferenceLibraryName)
                    .Append(" but it could not be loaded. Guessing the ")
                    .Append(guessed)
                    .Append(" to be the same as the ")
                    .Append(used)
                    .Append(".");

                warnings.Add(new LoadingOutputEntry("Project not found", msg, dep.WithTarget(result)));
            }

            AddLibrary(result);

            return result;
        }