public bool TryInferPrecondition(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredPreconditions preConditions)
 {
     DateTime now = DateTime.Now;
       		bool flag = this.inner.TryInferPrecondition(obl, codefixesManager, out preConditions);
       		PreconditionInferenceProfiler.inferenceTime += DateTime.Now - now;
       	if (preConditions == null)
         return false;
       	if (flag)
         PreconditionInferenceProfiler.inferred += Enumerable.Count<IInferredPrecond>((IEnumerable<IInferredPrecond>) preConditions);
       	return flag;
 }
 public bool TryLookUp(ProofObligation obligation, BoxedExpression expression, out ProofOutcome outcome)
 {
     string s = ((object)expression).ToString ();
     foreach (Tuple<BoxedExpression, string, ProofOutcome, List<ProofObligation>> item in this.inferred) {
         if (item.Item2 == s) {
             item.Item4.Add (obligation);
             outcome = item.Item4;
             return true;
         }
     }
     outcome = ProofOutcome.Top;
     return false;
 }
 public bool TryInferPrecondition(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredPreconditions preConditions)
 {
     preConditions = (InferredPreconditions) null;
     foreach (IPreconditionInference preconditionInference in this.inferencers)
     {
         InferredPreconditions preConditions1;
         if (preconditionInference != null && preconditionInference.TryInferPrecondition(obl, codefixesManager, out preConditions1))
         {
             if (preConditions == null)
                 preConditions = preConditions1;
      			else
             preConditions.AddRange((IEnumerable<IInferredPrecond>) preConditions1);
         }
     }
     return preConditions != null;
 }
 public bool TryInferPrecondition(ProofObligation obl, ICodeFixesManager codefixesManager, out InferredPreconditions preConditions)
 {
     preConditions = (InferredPreconditions)null;
     return false;
 }
 public ProofOutcome AddPreconditions(ProofObligation obl, IEnumerable<BoxedExpression> preconditions, ProofOutcome originalOutcome)
 {
     return originalOutcome;
 }
 public void Add(ProofObligation obligation, BoxedExpression expression, ProofOutcome outcome)
 {
     this.inferred.Add (new Tuple<BoxedExpression, string, ProofOutcome, List<ProofObligation>> (expression, ((object)expression).ToString (), outcome, new List<ProofObligation> (){obligation}));
     this.preconditions = (Dictionary<BoxedExpression, List<ProofObligation>>)null;
 }