class WheelchairFlagEncoder extends FootFlagEncoder {

    @Override
    public void applyWayTags(ReaderWay way, EdgeIteratorState edge) {
        PointList pl = edge.fetchWayGeometry(3);

        double prevEle = pl.getElevation(0);
        double fullDist2D = edge.getDistance();

        if (Double.isInfinite(fullDist2D)) {
            throw new IllegalStateException("Infinite distance should not happen due to #435. way ID=" + way.getId());
        }

        if (fullDist2D < 1) {
            return;
        }

        double eleDelta = pl.getElevation(pl.size() - 1) - prevEle;
        double elePercent = eleDelta / fullDist2D * 100;
        int smallInclinePercent = 3;
        if (elePercent > smallInclinePercent && elePercent < maxInclinePercent) {
            setFwdBwdSpeed(edge, SLOW_SPEED, MEAN_SPEED);
        } else if (elePercent < -smallInclinePercent && elePercent > -maxInclinePercent) {
            setFwdBwdSpeed(edge, MEAN_SPEED, SLOW_SPEED);
        } else if (elePercent > maxInclinePercent || elePercent < -maxInclinePercent) {
            edge.set(accessEnc, false);
            edge.setReverse(accessEnc, false);
        }
    }

    public  WheelchairFlagEncoder();
    public  WheelchairFlagEncoder(PMap properties);
    public  WheelchairFlagEncoder(int speedBits, double speedFactor);

}