public TResult Find(Node start, IDirectionData data) { var wires = data.Data.Select(wire => _parser.Parse(wire)); var nodePorts = wires.Select(c => _mapper.Map(start, c)); var intersections = _finder.Find(nodePorts); return(_calculator.Calculate(start, intersections)); }