private static CMakeItemDeclarations CreateSourceDeclarations(CMakeCommandId id,
     ParseRequest req, Source source, List<string> priorParameters)
 {
     CMakeSourceDeclarations decls = new CMakeSourceDeclarations(req.FileName);
     decls.FindIncludeFiles();
     if (_commandKeywords.ContainsKey(id))
     {
         decls.AddItems(_commandKeywords[id],
             CMakeItemDeclarations.ItemType.Command);
     }
     if (id == CMakeCommandId.AddExecutable || id == CMakeCommandId.AddLibrary)
     {
         // Exclude all files that already appear in the parameter list, except
         // for the first token, which is the name of the executable to be
         // generated.
         decls.ExcludeItems(priorParameters.Skip(1));
     }
     return decls;
 }