private void AddInstanceExpr(ITypeReference type, IExpression expr) { Contract.Requires(type != null); Contract.Requires(expr != null); Contract.Ensures(InstanceExpressions.ContainsKey(type)); Contract.Ensures(InstanceExpressions[type].Contains(expr)); Contract.Ensures(InstanceExpressionsReferredTypes.ContainsKey(expr)); Contract.Ensures(InstanceExpressionsReferredTypes[expr] == type); if (!InstanceExpressions.ContainsKey(type)) { InstanceExpressions.Add(type, new HashSet <IExpression>()); } InstanceExpressions[type].Add(expr); if (!InstanceExpressionsReferredTypes.ContainsKey(expr)) { InstanceExpressionsReferredTypes.Add(expr, type); } else { Debug.Assert(InstanceExpressionsReferredTypes[expr] == type); } }