internal static IIncludePathContext fetchIfAvailable(this IContextGeneratingVerb verb, ref DependencyDisposition ddisp)
        {
            try
            {
                return(((ContextContents)
                        BuildEngine.theEngine.Repository.FetchVirtual(verb.getContextOutput())).Context);
            }
            catch (ObjectNotReadyException)
            {
                // Oh, we don't even have the context object yet.
                ddisp = ddisp.combine(DependencyDisposition.Incomplete);
            }
            catch (ObjectFailedException)
            {
                ddisp = ddisp.combine(DependencyDisposition.Failed);
            }

            return(null);
        }
        internal static IIncludePathContext fetchIfAvailable(this IContextGeneratingVerb verb, ref DependencyDisposition ddisp)
        {
            try
            {
                return ((ContextContents)
                    BuildEngine.theEngine.Repository.FetchVirtual(verb.getContextOutput())).Context;
            }
            catch (ObjectNotReadyException)
            {
                // Oh, we don't even have the context object yet.
                ddisp = ddisp.combine(DependencyDisposition.Incomplete);
            }
            catch (ObjectFailedException)
            {
                ddisp = ddisp.combine(DependencyDisposition.Failed);
            }

            return null;
        }
        public static HashSet <BuildObject> getForestDependencies(IEnumerable <BuildObject> roots, out DependencyDisposition ddisp)
        {
            HashSet <BuildObject> result = new HashSet <BuildObject>();

            ddisp = DependencyDisposition.Complete;
            foreach (BuildObject dfysource in roots)
            {
                TransitiveDepsVerb    depsVerb = new DafnyTransitiveDepsVerb(dfysource);
                DependencyDisposition localDDisp;
                result.UnionWith(depsVerb.getAvailableDeps(out localDDisp));
                ddisp = ddisp.combine(localDDisp);
                result.Add(dfysource);  //- TransitiveDeps *exclude* the root, so we need to add that in, too.
            }
            return(result);
        }
        public static HashSet<BuildObject> getForestDependencies(IEnumerable<BuildObject> roots, out DependencyDisposition ddisp)
        {
            HashSet<BuildObject> result = new HashSet<BuildObject>();
            ddisp = DependencyDisposition.Complete;
            foreach (BuildObject dfysource in roots)
            {
                TransitiveDepsVerb depsVerb = new DafnyTransitiveDepsVerb(dfysource);
                DependencyDisposition localDDisp;
                result.UnionWith(depsVerb.getAvailableDeps(out localDDisp));
                ddisp = ddisp.combine(localDDisp);
                result.Add(dfysource);  // TransitiveDeps *exclude* the root, so we need to add that in, too.
            }

            return result;
        }
            void getBasmModule(string modName, ModPart modPart)
            {
                //-Logger.WriteLine(String.Format("context {0} modName {1} modPart {2}", context, modName, modPart));
                //-BuildObject ifcObj = context.search(modName, modPart);
                BuildObject ifcObj = BuildEngine.theEngine.getHasher().search(context, modName, modPart);

                if (ifcObj == null)
                {
                    Util.Assert(false); //- I'm not sure this case even occur anymore, since we guard the foreach on incomplete deps
                    _ddisp = _ddisp.combine(DependencyDisposition.Incomplete);
                }
                else
                {
                    ifcObj = maybeBeat(ifcObj, _mutableVerbSet);
                    _basmModules.Add(ifcObj);
                }
            }