Buggy code:
public class QueryGraph implements Graph { private final Graph mainGraph ; private final NodeAccess mainNodeAccess ; private final int mainNodes ; private final int mainEdges ; private final QueryGraph baseGraph ; private final GraphExtension wrappedExtension ; private List < QueryResult > queryResults ; private List < EdgeIteratorState > virtualEdges ; private static final int VE_BASE = 0 ; private static final int VE_BASE_REV = 1 ; private static final int VE_ADJ = 2 ; private static final int VE_ADJ_REV = 3 ; private PointList virtualNodes ; public QueryGraph ( Graph graph ) { } private QueryGraph ( Graph graph , QueryGraph superQueryGraph ) { } public QueryGraph lookup ( QueryResult fromRes , QueryResult toRes ) { } public void lookup ( List < QueryResult > resList ) { } @ Override public Graph getBaseGraph ( ) { } public boolean isVirtualEdge ( int edgeId ) { } public boolean isVirtualNode ( int nodeId ) { } class QueryGraphTurnExt extends TurnCostExtension { private final TurnCostExtension mainTurnExtension ; public QueryGraphTurnExt ( QueryGraph qGraph ) { } @ Override public long getTurnCostFlags ( int edgeFrom , int nodeVia , int edgeTo ) { } } private void createEdges ( GHPoint3D prevSnapped , int prevWayIndex , GHPoint3D currSnapped , int wayIndex , PointList fullPL , EdgeIteratorState closestEdge , int prevNodeId , int nodeId , long reverseFlags ) { } @ Override public int getNodes ( ) { } @ Override public NodeAccess getNodeAccess ( ) { } private final NodeAccess nodeAccess = new NodeAccess ( ) { @ Override public void ensureNode ( int nodeId ) { } @ Override public boolean is3D ( ) { } @ Override public int getDimension ( ) { } @ Override public double getLatitude ( int nodeId ) { } @ Override public double getLongitude ( int nodeId ) { } @ Override public double getElevation ( int nodeId ) { } @ Override public int getAdditionalNodeField ( int nodeId ) { } @ Override public void setNode ( int nodeId , double lat , double lon ) { } @ Override public void setNode ( int nodeId , double lat , double lon , double ele ) { } @ Override public void setAdditionalNodeField ( int nodeId , int additionalValue ) { } @ Override public double getLat ( int nodeId ) { } @ Override public double getLon ( int nodeId ) { } @ Override public double getEle ( int nodeId ) { } } ; @ Override public BBox getBounds ( ) { } @ Override public EdgeIteratorState getEdgeProps ( int origEdgeId , int adjNode ) { } @ Override public EdgeExplorer createEdgeExplorer ( final EdgeFilter edgeFilter ) { } private void addVirtualEdges ( TIntObjectMap < VirtualEdgeIterator > node2EdgeMap , EdgeFilter filter , boolean base , int node , int virtNode ) { } void fillVirtualEdges ( TIntObjectMap < VirtualEdgeIterator > node2Edge , int towerNode , EdgeExplorer mainExpl ) { } private boolean isInitialized ( ) { } @ Override public EdgeExplorer createEdgeExplorer ( ) { } @ Override public AllEdgesIterator getAllEdges ( ) { } public int getLevel ( int nodeId ) { if ( isVirtualNode ( nodeId ) ) <START_BUG> return 0 ; <END_BUG> return ( ( LevelGraph ) ( mainGraph ) ) . getLevel ( nodeId ) ; } @ Override public EdgeIteratorState edge ( int a , int b ) { } public EdgeIteratorState edge ( int a , int b , double distance , int flags ) { } @ Override public EdgeIteratorState edge ( int a , int b , double distance , boolean bothDirections ) { } @ Override public Graph copyTo ( Graph g ) { } @ Override public GraphExtension getExtension ( ) { } private UnsupportedOperationException exc ( ) { } private static class VirtualEdgeIState implements EdgeIteratorState , EdgeSkipIterState { private final PointList pointList ; private final int edgeId ; private double distance ; private long flags ; private String name ; private final int baseNode ; private final int adjNode ; public VirtualEdgeIState ( int edgeId , int baseNode , int adjNode , double distance , long flags , String name , PointList pointList ) { } @ Override public int getEdge ( ) { } @ Override public int getBaseNode ( ) { } @ Override public int getAdjNode ( ) { } @ Override public PointList fetchWayGeometry ( int mode ) { } @ Override public EdgeIteratorState setWayGeometry ( PointList list ) { } @ Override public double getDistance ( ) { } @ Override public EdgeIteratorState setDistance ( double dist ) { } @ Override public long getFlags ( ) { } @ Override public EdgeIteratorState setFlags ( long flags ) { } @ Override public String getName ( ) { } @ Override public EdgeIteratorState setName ( String name ) { } @ Override public String toString ( ) { } @ Override public boolean isShortcut ( ) { } @ Override public int getAdditionalField ( ) { } @ Override public int getSkippedEdge1 ( ) { } @ Override public int getSkippedEdge2 ( ) { } @ Override public void setSkippedEdges ( int edge1 , int edge2 ) { } @ Override public EdgeIteratorState detach ( boolean reverse ) { } @ Override public EdgeIteratorState setAdditionalField ( int value ) { } @ Override public EdgeIteratorState copyPropertiesTo ( EdgeIteratorState edge ) { } @ Override public EdgeSkipIterState setWeight ( double weight ) { } @ Override public double getWeight ( ) { } } }

Fix:
throw new IllegalStateException ( ( ( "LevelEdgeFilter<seq2seq4repair_space>should<seq2seq4repair_space>prevent<seq2seq4repair_space>fetching<seq2seq4repair_space>level<seq2seq4repair_space>for<seq2seq4repair_space>virtual<seq2seq4repair_space>nodes:<seq2seq4repair_space>" + nodeId ) + ",<seq2seq4repair_space>See<seq2seq4repair_space>#288" ) ) ;