@Override
    protected double processTargetNode(final RoutingContext rc) {
        final KinematicModel km = (KinematicModel) rc.pm;

        // finally add node-costs for target node
        if (targetNode.nodeDescription != null) {
            rc.expctxNode.evaluate(false, targetNode.nodeDescription);
            final float initialcost = rc.expctxNode.getInitialcost();
            if (initialcost >= 1000000.) {
                return -1.;
            }
            cutEkin(km.totalweight, km.getNodeMaxspeed()); // apply node maxspeed

            if (message != null) {
                message.linknodecost += (int) initialcost;
                message.nodeKeyValues = rc.expctxNode.getKeyValueDescription(false, targetNode.nodeDescription);

                message.vnode1 = (int) (km.getNodeMaxspeed() * 3.6 + 0.5);
            }
            return initialcost;
        }
        return 0.;
    }
The path-instance of the kinematic model

@author ab
main/src/main/java/cgeo/geocaching/brouter/core/KinematicPath.java