+ byte[] dest_node_id = ((Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK) invoice).res.recover_payee_pub_key();
+ assert Arrays.equals(dest_node_id, peer2.node_id);
+ InvoiceFeatures invoice_features = ((Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK) invoice).res.features();
+ ArrayList<RouteHintHop> invoice_hops = new ArrayList<RouteHintHop>();
+ for (RouteHint hint: ((Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK) invoice).res.routes()) {
+ RouteHintHop[] hops = hint.into_inner();
+ if (hops.length == 1) {
+ invoice_hops.add(hops[0]);
+ }
+ }
+
+ Route route;
+ try (LockedNetworkGraph netgraph = peer1.router.read_locked_graph()) {
+ NetworkGraph graph = netgraph.graph();
+ Result_RouteLightningErrorZ route_res = UtilMethods.get_route(peer1.chan_manager.get_our_node_id(), graph, peer2.node_id, invoice_features, peer1_chans, invoice_hops.toArray(new RouteHintHop[0]), 1000000, 42, peer1.logger);
+ assert route_res instanceof Result_RouteLightningErrorZ.Result_RouteLightningErrorZ_OK;
+ route = ((Result_RouteLightningErrorZ.Result_RouteLightningErrorZ_OK) route_res).res;
+ }