protected void InsertPreConditionEdges(BlockWithLabels <Label> previousBlock, BlockWithLabels <Label> newBlock) { var methodCallBlock = newBlock as MethodCallBlock <Label>; if (methodCallBlock == null || CurrentSubroutine.IsContract || CurrentSubroutine.IsOldValue) { return; } if (CurrentSubroutine.IsMethod) { var methodInfo = CurrentSubroutine as IMethodInfo; Property property; if (methodInfo != null && MetaDataProvider.IsConstructor(methodInfo.Method) && MetaDataProvider.IsPropertySetter(methodCallBlock.CalledMethod, out property) && MetaDataProvider.IsAutoPropertyMember(methodCallBlock.CalledMethod)) { return; } } EdgeTag callTag = methodCallBlock.IsNewObj ? EdgeTag.BeforeNewObj : EdgeTag.BeforeCall; Subroutine requires = this.SubroutineFacade.GetRequires(methodCallBlock.CalledMethod); CurrentSubroutine.AddEdgeSubroutine(previousBlock, newBlock, requires, callTag); }