### Question:
PlainStreetEdge extends StreetEdge implements Cloneable { @Override public boolean canTraverse(RoutingRequest options) { if (options.wheelchairAccessible) { if (!wheelchairAccessible) { return false; } if (elevationProfileSegment.getMaxSlope() > options.maxSlope) { return false; } } return canTraverse(options.getModes()); } PlainStreetEdge();  PlainStreetEdge(StreetVertex v1, StreetVertex v2, LineString geometry, 
            String name, double length,
            StreetTraversalPermission permission, boolean back);  PlainStreetEdge(StreetVertex v1, StreetVertex v2, LineString geometry, 
            String name, double length,
            StreetTraversalPermission permission, boolean back, float carSpeed); @Override boolean canTraverse(RoutingRequest options); @Override boolean canTraverse(TraverseModeSet modes); @Override PackedCoordinateSequence getElevationProfile(); @Override boolean setElevationProfile(PackedCoordinateSequence elev, boolean computed); @Override boolean isElevationFlattened(); @Override double getDistance(); @Override State traverse(State s0); @Override double weightLowerBound(RoutingRequest options); @Override double timeLowerBound(RoutingRequest options); void setSlopeSpeedEffectiveLength(double slopeSpeedEffectiveLength); double getSlopeSpeedEffectiveLength(); void setSlopeWorkCost(double slopeWorkCost); double getWorkCost(); void setBicycleSafetyEffectiveLength(double bicycleSafetyEffectiveLength); double getBicycleSafetyEffectiveLength(); @Override PackedCoordinateSequence getElevationProfile(double start, double end); void setSlopeOverride(boolean slopeOverride); void setNote(Set<Alert> notes); @Override String toString(); boolean hasBogusName(); boolean hasExplicitTurnRestrictions(); void setWheelchairNote(Set<Alert> wheelchairNotes); void addTurnRestriction(TurnRestriction turnRestriction); @Override PlainStreetEdge clone(); boolean canTurnOnto(Edge e, State state, TraverseMode mode); @Override ElevationProfileSegment getElevationProfileSegment(); @Getter @Setter
    public boolean back; @Getter
    public int inAngle; @Getter
    public int outAngle; }### Answer:
@Test public void testModeSetCanTraverse() { PlainStreetEdge e = edge(v1, v2, 1.0, StreetTraversalPermission.ALL); TraverseModeSet modes = TraverseModeSet.allModes(); assertTrue(e.canTraverse(modes)); modes = new TraverseModeSet(TraverseMode.BICYCLE, TraverseMode.WALK); assertTrue(e.canTraverse(modes)); e = edge(v1, v2, 1.0, StreetTraversalPermission.ALL_DRIVING); assertFalse(e.canTraverse(modes)); modes = new TraverseModeSet(TraverseMode.CAR, TraverseMode.WALK); assertTrue(e.canTraverse(modes)); }