Set<GraphEdge> (int rowIndex) { GraphEdges neighborU = getNeighborU(rowIndex); while (neighborU.myRow < rowIndex) { neighborU = oneDownStep(neighborU); } GraphEdges neighborD = getNeighborD(rowIndex); while (neighborD.myRow > rowIndex) { neighborD = oneUpStep(neighborD); } Set<GraphEdge> result = neighborU.myEdges; result.addAll(neighborD.myEdges); return result; }