public bool HasSinglePredecessor(APC ppoint, out APC singlePredecessor, bool skipContracts)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         return(underlying.HasSinglePredecessor(ppoint, out singlePredecessor, skipContracts));
     }
     finally {
         CallAdaption.Pop(this);
     }
 }
 public IEnumerable <APC> Successors(APC ppoint)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         return(underlying.Successors(ppoint));
     }
     finally {
         CallAdaption.Pop(this);
     }
 }
 public bool HasSingleSuccessor(APC ppoint, out APC singleSuccessor)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         return(underlying.HasSingleSuccessor(ppoint, out singleSuccessor));
     }
     finally {
         CallAdaption.Pop(this);
     }
 }
 public IEnumerable <APC> Predecessors(APC ppoint, bool skipContracts)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         return(underlying.Predecessors(ppoint, skipContracts));
     }
     finally
     {
         CallAdaption.Pop(this);
     }
 }
 public void Print(System.IO.TextWriter tw, ILPrinter <APC> ilPrinter, BlockInfoPrinter <APC> edgePrinter, Func <CFGBlock, IEnumerable <DataStructures.FList <DataStructures.STuple <CFGBlock, CFGBlock, string> > > > contextLookup, DataStructures.FList <DataStructures.STuple <CFGBlock, CFGBlock, string> > context)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         underlying.Print(tw, ilPrinter, edgePrinter, contextLookup, context);
     }
     finally
     {
         CallAdaption.Pop(this);
     }
 }
 public string ToString(APC pc)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         return(underlying.ToString(pc));
     }
     finally
     {
         CallAdaption.Pop(this);
     }
 }
 public APC PredecessorPCPriorToRequires(APC ppoint)
 {
     CallAdaption.Push <IEdgeSubroutineAdaptor>(this);
     try
     {
         return(underlying.PredecessorPCPriorToRequires(ppoint));
     }
     finally
     {
         CallAdaption.Pop(this);
     }
 }
        public FList <Pair <string, Subroutine> > GetOrdinaryEdgeSubroutines(CFGBlock from, CFGBlock to, SubroutineContext context)
        {
            CallAdaption.Push(this);

            try
            {
                return(this.Subroutine.GetOrdinaryEdgeSubroutines(from, to, context));
            }
            finally
            {
                CallAdaption.Pop(this);
            }
        }
 private IEnumerable <Pair <Unit, APC> > SuccessorEdges(APC pc, IGraph <APC, Unit> underlyingGraph)
 {
     CallAdaption.Push(this);
     try
     {
         foreach (var succ in underlyingGraph.Successors(pc))
         {
             yield return(succ);
         }
     }
     finally
     {
         CallAdaption.Pop(this);
     }
 }
        public DataStructures.FList <DataStructures.Pair <string, Subroutine> > GetOrdinaryEdgeSubroutinesInternal(CFGBlock from, CFGBlock to, DataStructures.FList <DataStructures.STuple <CFGBlock, CFGBlock, string> > context)
        {
            var result = CallAdaption.Inner <IEdgeSubroutineAdaptor>(this).GetOrdinaryEdgeSubroutinesInternal(from, to, context);

            return(result.Filter(pair => !(pair.Two.IsContract || pair.Two.IsOldValue)));
        }