internal ControlFlowGraphVertex(AnalysisEngine engine, SourceRoutineSymbol routine, BoundBlock block) { this.Engine = engine; this.routine = routine; this.block = block; this.File = routine.ContainingFile.SyntaxTree.FilePath; this.Vid = this.block.Ordinal + this.File.GetHashCode(); this.BlockName = this.block.DebugDisplay; this.Kind = this.block.Kind.ToString(); this.RoutineName = this.routine.Name; this.Statements = this.block.Statements != null ? block.Statements.Count : 0; LangElement l = PhylDiagnosingVisitor.PickFirstSyntaxNode(this.block); if (l != null) { Tuple <int, int> pos = engine.GetLineFromTokenPosition(l.Span.Start, this.File); this.Line = pos.Item1; this.Column = pos.Item2; } }