Update auto-generated bindings
[ldk-java] / src / main / java / org / ldk / impl / bindings.java
index 99e579fb65f776153dd181cd830b91d4166330b6..5e7973047e3e2482b320fd72abe0c35c2f51c6e1 100644 (file)
@@ -77,24 +77,18 @@ public class bindings {
        static { Secp256k1Error.values(); /* Force enum statics to run */ }
        static { SemanticError.values(); /* Force enum statics to run */ }
        static { SiPrefix.values(); /* Force enum statics to run */ }
-       public static native long LDKCVec_u8Z_new(byte[] elems);
        // struct LDKCVec_u8Z TxOut_get_script_pubkey (struct LDKTxOut* thing)
        public static native byte[] TxOut_get_script_pubkey(long thing);
        // uint64_t TxOut_get_value (struct LDKTxOut* thing)
        public static native long TxOut_get_value(long thing);
-       public static native boolean LDKCResult_SecretKeyErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult_SecretKeyErrorZ_get_ok(long arg);
        public static native Secp256k1Error LDKCResult_SecretKeyErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_PublicKeyErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult_PublicKeyErrorZ_get_ok(long arg);
        public static native Secp256k1Error LDKCResult_PublicKeyErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_TxCreationKeysDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_TxCreationKeysDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_TxCreationKeysDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelPublicKeysDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelPublicKeysDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelPublicKeysDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_TxCreationKeysErrorZ_result_ok(long arg);
        public static native long LDKCResult_TxCreationKeysErrorZ_get_ok(long arg);
        public static native Secp256k1Error LDKCResult_TxCreationKeysErrorZ_get_err(long arg);
        public static class LDKCOption_u32Z {
@@ -110,53 +104,36 @@ public class bindings {
        }
        static { LDKCOption_u32Z.init(); }
        public static native LDKCOption_u32Z LDKCOption_u32Z_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_HTLCOutputInCommitmentDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelTransactionParametersDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelTransactionParametersDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_HolderCommitmentTransactionDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_HolderCommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_BuiltCommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_TrustedClosingTransactionNoneZ_result_ok(long arg);
        public static native long LDKCResult_TrustedClosingTransactionNoneZ_get_ok(long arg);
        public static native void LDKCResult_TrustedClosingTransactionNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_CommitmentTransactionDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_CommitmentTransactionDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_CommitmentTransactionDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_TrustedCommitmentTransactionNoneZ_result_ok(long arg);
        public static native long LDKCResult_TrustedCommitmentTransactionNoneZ_get_ok(long arg);
        public static native void LDKCResult_TrustedCommitmentTransactionNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_CVec_SignatureZNoneZ_result_ok(long arg);
        public static native byte[][] LDKCResult_CVec_SignatureZNoneZ_get_ok(long arg);
        public static native void LDKCResult_CVec_SignatureZNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_ShutdownScriptDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ShutdownScriptDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ShutdownScriptDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ShutdownScriptInvalidShutdownScriptZ_result_ok(long arg);
        public static native long LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_ok(long arg);
        public static native long LDKCResult_ShutdownScriptInvalidShutdownScriptZ_get_err(long arg);
-       public static native boolean LDKCResult_NoneErrorZ_result_ok(long arg);
        public static native void LDKCResult_NoneErrorZ_get_ok(long arg);
        public static native IOError LDKCResult_NoneErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_RouteHopDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RouteHopDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RouteHopDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_RouteHopZ_new(long[] elems);
-       public static native boolean LDKCResult_RouteDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RouteDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RouteDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_RouteParametersDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RouteParametersDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RouteParametersDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_RouteHintZ_new(long[] elems);
        public static class LDKCOption_u64Z {
                private LDKCOption_u64Z() {}
                public final static class Some extends LDKCOption_u64Z {
@@ -170,29 +147,20 @@ public class bindings {
        }
        static { LDKCOption_u64Z.init(); }
        public static native LDKCOption_u64Z LDKCOption_u64Z_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_PayeeDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_PayeeDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_PayeeDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_RouteHintHopZ_new(long[] elems);
-       public static native boolean LDKCResult_RouteHintDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RouteHintDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RouteHintDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_RouteHintHopDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RouteHintHopDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RouteHintHopDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_ChannelDetailsZ_new(long[] elems);
-       public static native boolean LDKCResult_RouteLightningErrorZ_result_ok(long arg);
        public static native long LDKCResult_RouteLightningErrorZ_get_ok(long arg);
        public static native long LDKCResult_RouteLightningErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_TxOutAccessErrorZ_result_ok(long arg);
        public static native long LDKCResult_TxOutAccessErrorZ_get_ok(long arg);
        public static native AccessError LDKCResult_TxOutAccessErrorZ_get_err(long arg);
        // uintptr_t C2Tuple_usizeTransactionZ_get_a(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple);
        public static native long C2Tuple_usizeTransactionZ_get_a(long tuple);
        // struct LDKTransaction C2Tuple_usizeTransactionZ_get_b(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_usizeTransactionZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_usizeTransactionZZ_new(long[] elems);
-       public static native boolean LDKCResult_NoneChannelMonitorUpdateErrZ_result_ok(long arg);
        public static native void LDKCResult_NoneChannelMonitorUpdateErrZ_get_ok(long arg);
        public static native ChannelMonitorUpdateErr LDKCResult_NoneChannelMonitorUpdateErrZ_get_err(long arg);
        public static class LDKMonitorEvent {
@@ -218,7 +186,6 @@ public class bindings {
        }
        static { LDKMonitorEvent.init(); }
        public static native LDKMonitorEvent LDKMonitorEvent_ref_from_ptr(long ptr);
-       public static native long LDKCVec_MonitorEventZ_new(long[] elems);
        public static class LDKCOption_C2Tuple_usizeTransactionZZ {
                private LDKCOption_C2Tuple_usizeTransactionZZ() {}
                public final static class Some extends LDKCOption_C2Tuple_usizeTransactionZZ {
@@ -232,6 +199,50 @@ public class bindings {
        }
        static { LDKCOption_C2Tuple_usizeTransactionZZ.init(); }
        public static native LDKCOption_C2Tuple_usizeTransactionZZ LDKCOption_C2Tuple_usizeTransactionZZ_ref_from_ptr(long ptr);
+       public static class LDKClosureReason {
+               private LDKClosureReason() {}
+               public final static class CounterpartyForceClosed extends LDKClosureReason {
+                       public String peer_msg;
+                       CounterpartyForceClosed(String peer_msg) { this.peer_msg = peer_msg; }
+               }
+               public final static class HolderForceClosed extends LDKClosureReason {
+                       HolderForceClosed() { }
+               }
+               public final static class CooperativeClosure extends LDKClosureReason {
+                       CooperativeClosure() { }
+               }
+               public final static class CommitmentTxConfirmed extends LDKClosureReason {
+                       CommitmentTxConfirmed() { }
+               }
+               public final static class ProcessingError extends LDKClosureReason {
+                       public String err;
+                       ProcessingError(String err) { this.err = err; }
+               }
+               public final static class DisconnectedPeer extends LDKClosureReason {
+                       DisconnectedPeer() { }
+               }
+               public final static class OutdatedChannelManager extends LDKClosureReason {
+                       OutdatedChannelManager() { }
+               }
+               static native void init();
+       }
+       static { LDKClosureReason.init(); }
+       public static native LDKClosureReason LDKClosureReason_ref_from_ptr(long ptr);
+       public static class LDKCOption_ClosureReasonZ {
+               private LDKCOption_ClosureReasonZ() {}
+               public final static class Some extends LDKCOption_ClosureReasonZ {
+                       public long some;
+                       Some(long some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_ClosureReasonZ {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_ClosureReasonZ.init(); }
+       public static native LDKCOption_ClosureReasonZ LDKCOption_ClosureReasonZ_ref_from_ptr(long ptr);
+       public static native long LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_COption_ClosureReasonZDecodeErrorZ_get_err(long arg);
        public static class LDKNetworkUpdate {
                private LDKNetworkUpdate() {}
                public final static class ChannelUpdateMessage extends LDKNetworkUpdate {
@@ -284,7 +295,98 @@ public class bindings {
        }
        static { LDKSpendableOutputDescriptor.init(); }
        public static native LDKSpendableOutputDescriptor LDKSpendableOutputDescriptor_ref_from_ptr(long ptr);
-       public static native long LDKCVec_SpendableOutputDescriptorZ_new(long[] elems);
+       public static class LDKPaymentPurpose {
+               private LDKPaymentPurpose() {}
+               public final static class InvoicePayment extends LDKPaymentPurpose {
+                       public byte[] payment_preimage;
+                       public byte[] payment_secret;
+                       public long user_payment_id;
+                       InvoicePayment(byte[] payment_preimage, byte[] payment_secret, long user_payment_id) { this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; this.user_payment_id = user_payment_id; }
+               }
+               public final static class SpontaneousPayment extends LDKPaymentPurpose {
+                       public byte[] spontaneous_payment;
+                       SpontaneousPayment(byte[] spontaneous_payment) { this.spontaneous_payment = spontaneous_payment; }
+               }
+               static native void init();
+       }
+       static { LDKPaymentPurpose.init(); }
+       public static native LDKPaymentPurpose LDKPaymentPurpose_ref_from_ptr(long ptr);
+       public static class LDKEvent {
+               private LDKEvent() {}
+               public final static class FundingGenerationReady extends LDKEvent {
+                       public byte[] temporary_channel_id;
+                       public long channel_value_satoshis;
+                       public byte[] output_script;
+                       public long user_channel_id;
+                       FundingGenerationReady(byte[] temporary_channel_id, long channel_value_satoshis, byte[] output_script, long user_channel_id) { this.temporary_channel_id = temporary_channel_id; this.channel_value_satoshis = channel_value_satoshis; this.output_script = output_script; this.user_channel_id = user_channel_id; }
+               }
+               public final static class PaymentReceived extends LDKEvent {
+                       public byte[] payment_hash;
+                       public long amt;
+                       public long purpose;
+                       PaymentReceived(byte[] payment_hash, long amt, long purpose) { this.payment_hash = payment_hash; this.amt = amt; this.purpose = purpose; }
+               }
+               public final static class PaymentSent extends LDKEvent {
+                       public byte[] payment_id;
+                       public byte[] payment_preimage;
+                       public byte[] payment_hash;
+                       public long fee_paid_msat;
+                       PaymentSent(byte[] payment_id, byte[] payment_preimage, byte[] payment_hash, long fee_paid_msat) { this.payment_id = payment_id; this.payment_preimage = payment_preimage; this.payment_hash = payment_hash; this.fee_paid_msat = fee_paid_msat; }
+               }
+               public final static class PaymentPathFailed extends LDKEvent {
+                       public byte[] payment_id;
+                       public byte[] payment_hash;
+                       public boolean rejected_by_dest;
+                       public long network_update;
+                       public boolean all_paths_failed;
+                       public long[] path;
+                       public long short_channel_id;
+                       public long retry;
+                       PaymentPathFailed(byte[] payment_id, byte[] payment_hash, boolean rejected_by_dest, long network_update, boolean all_paths_failed, long[] path, long short_channel_id, long retry) { this.payment_id = payment_id; this.payment_hash = payment_hash; this.rejected_by_dest = rejected_by_dest; this.network_update = network_update; this.all_paths_failed = all_paths_failed; this.path = path; this.short_channel_id = short_channel_id; this.retry = retry; }
+               }
+               public final static class PendingHTLCsForwardable extends LDKEvent {
+                       public long time_forwardable;
+                       PendingHTLCsForwardable(long time_forwardable) { this.time_forwardable = time_forwardable; }
+               }
+               public final static class SpendableOutputs extends LDKEvent {
+                       public long[] outputs;
+                       SpendableOutputs(long[] outputs) { this.outputs = outputs; }
+               }
+               public final static class PaymentForwarded extends LDKEvent {
+                       public long fee_earned_msat;
+                       public boolean claim_from_onchain_tx;
+                       PaymentForwarded(long fee_earned_msat, boolean claim_from_onchain_tx) { this.fee_earned_msat = fee_earned_msat; this.claim_from_onchain_tx = claim_from_onchain_tx; }
+               }
+               public final static class ChannelClosed extends LDKEvent {
+                       public byte[] channel_id;
+                       public long user_channel_id;
+                       public long reason;
+                       ChannelClosed(byte[] channel_id, long user_channel_id, long reason) { this.channel_id = channel_id; this.user_channel_id = user_channel_id; this.reason = reason; }
+               }
+               public final static class DiscardFunding extends LDKEvent {
+                       public byte[] channel_id;
+                       public byte[] transaction;
+                       DiscardFunding(byte[] channel_id, byte[] transaction) { this.channel_id = channel_id; this.transaction = transaction; }
+               }
+               static native void init();
+       }
+       static { LDKEvent.init(); }
+       public static native LDKEvent LDKEvent_ref_from_ptr(long ptr);
+       public static class LDKCOption_EventZ {
+               private LDKCOption_EventZ() {}
+               public final static class Some extends LDKCOption_EventZ {
+                       public long some;
+                       Some(long some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_EventZ {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_EventZ.init(); }
+       public static native LDKCOption_EventZ LDKCOption_EventZ_ref_from_ptr(long ptr);
+       public static native long LDKCResult_COption_EventZDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_COption_EventZDecodeErrorZ_get_err(long arg);
        public static class LDKErrorAction {
                private LDKErrorAction() {}
                public final static class DisconnectPeer extends LDKErrorAction {
@@ -405,45 +507,32 @@ public class bindings {
        }
        static { LDKMessageSendEvent.init(); }
        public static native LDKMessageSendEvent LDKMessageSendEvent_ref_from_ptr(long ptr);
-       public static native long LDKCVec_MessageSendEventZ_new(long[] elems);
-       public static native boolean LDKCResult_InitFeaturesDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_InitFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NodeFeaturesDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NodeFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelFeaturesDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_InvoiceFeaturesDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_InvoiceFeaturesDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_InvoiceFeaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ScoringParametersDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ScoringParametersDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ScoringParametersDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ScorerDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ScorerDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ScorerDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_SpendableOutputDescriptorDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_SpendableOutputDescriptorDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NoneNoneZ_result_ok(long arg);
        public static native void LDKCResult_NoneNoneZ_get_ok(long arg);
        public static native void LDKCResult_NoneNoneZ_get_err(long arg);
        // struct LDKSignature C2Tuple_SignatureCVec_SignatureZZ_get_a(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_SignatureCVec_SignatureZZ_get_a(long tuple);
        // struct LDKCVec_SignatureZ C2Tuple_SignatureCVec_SignatureZZ_get_b(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR tuple);
        public static native byte[][] C2Tuple_SignatureCVec_SignatureZZ_get_b(long tuple);
-       public static native boolean LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_result_ok(long arg);
        public static native long LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_ok(long arg);
        public static native void LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_SignatureNoneZ_result_ok(long arg);
        public static native byte[] LDKCResult_SignatureNoneZ_get_ok(long arg);
        public static native void LDKCResult_SignatureNoneZ_get_err(long arg);
        public interface LDKBaseSign {
@@ -497,28 +586,20 @@ public class bindings {
        public static native long LDKSign_get_BaseSign(long arg);
        // LDKCVec_u8Z Sign_write LDKSign *NONNULL_PTR this_arg
        public static native byte[] Sign_write(long this_arg);
-       public static native boolean LDKCResult_SignDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_SignDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_SignDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_RecoverableSignatureNoneZ_result_ok(long arg);
        public static native byte[] LDKCResult_RecoverableSignatureNoneZ_get_ok(long arg);
        public static native void LDKCResult_RecoverableSignatureNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_CVec_CVec_u8ZZNoneZ_result_ok(long arg);
        public static native byte[][] LDKCResult_CVec_CVec_u8ZZNoneZ_get_ok(long arg);
        public static native void LDKCResult_CVec_CVec_u8ZZNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_InMemorySignerDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_InMemorySignerDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_TxOutZ_new(long[] elems);
-       public static native boolean LDKCResult_TransactionNoneZ_result_ok(long arg);
        public static native byte[] LDKCResult_TransactionNoneZ_get_ok(long arg);
        public static native void LDKCResult_TransactionNoneZ_get_err(long arg);
        // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelMonitorZ_get_a(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_BlockHashChannelMonitorZ_get_a(long tuple);
        // struct LDKChannelMonitor C2Tuple_BlockHashChannelMonitorZ_get_b(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR tuple);
        public static native long C2Tuple_BlockHashChannelMonitorZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_BlockHashChannelMonitorZZ_new(long[] elems);
-       public static native boolean LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_result_ok(long arg);
        public static native long[] LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_ok(long arg);
        public static native IOError LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_get_err(long arg);
        public static class LDKCOption_u16Z {
@@ -564,12 +645,8 @@ public class bindings {
        }
        static { LDKAPIError.init(); }
        public static native LDKAPIError LDKAPIError_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_NoneAPIErrorZ_result_ok(long arg);
        public static native void LDKCResult_NoneAPIErrorZ_get_ok(long arg);
        public static native long LDKCResult_NoneAPIErrorZ_get_err(long arg);
-       public static native long LDKCVec_CResult_NoneAPIErrorZZ_new(long[] elems);
-       public static native long LDKCVec_APIErrorZ_new(long[] elems);
-       public static native boolean LDKCResult__u832APIErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult__u832APIErrorZ_get_ok(long arg);
        public static native long LDKCResult__u832APIErrorZ_get_err(long arg);
        public static class LDKPaymentSendFailure {
@@ -596,17 +673,14 @@ public class bindings {
        }
        static { LDKPaymentSendFailure.init(); }
        public static native LDKPaymentSendFailure LDKPaymentSendFailure_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_PaymentIdPaymentSendFailureZ_result_ok(long arg);
        public static native byte[] LDKCResult_PaymentIdPaymentSendFailureZ_get_ok(long arg);
        public static native long LDKCResult_PaymentIdPaymentSendFailureZ_get_err(long arg);
-       public static native boolean LDKCResult_NonePaymentSendFailureZ_result_ok(long arg);
        public static native void LDKCResult_NonePaymentSendFailureZ_get_ok(long arg);
        public static native long LDKCResult_NonePaymentSendFailureZ_get_err(long arg);
        // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_a(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_PaymentHashPaymentIdZ_get_a(long tuple);
        // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentIdZ_get_b(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_PaymentHashPaymentIdZ_get_b(long tuple);
-       public static native boolean LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_result_ok(long arg);
        public static native long LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_ok(long arg);
        public static native long LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_get_err(long arg);
        public static class LDKNetAddress {
@@ -637,15 +711,12 @@ public class bindings {
        }
        static { LDKNetAddress.init(); }
        public static native LDKNetAddress LDKNetAddress_ref_from_ptr(long ptr);
-       public static native long LDKCVec_NetAddressZ_new(long[] elems);
        // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_a(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_PaymentHashPaymentSecretZ_get_a(long tuple);
        // struct LDKThirtyTwoBytes C2Tuple_PaymentHashPaymentSecretZ_get_b(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_PaymentHashPaymentSecretZ_get_b(long tuple);
-       public static native boolean LDKCResult_PaymentSecretAPIErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult_PaymentSecretAPIErrorZ_get_ok(long arg);
        public static native long LDKCResult_PaymentSecretAPIErrorZ_get_err(long arg);
-       public static native long LDKCVec_ChannelMonitorZ_new(long[] elems);
        public interface LDKWatch {
                 long watch_channel(long funding_txo, long monitor);
                 long update_channel(long funding_txo, long update);
@@ -695,20 +766,17 @@ public class bindings {
        // uint32_t FeeEstimator_get_est_sat_per_1000_weight LDKFeeEstimator *NONNULL_PTR this_arg, enum LDKConfirmationTarget confirmation_target
        public static native int FeeEstimator_get_est_sat_per_1000_weight(long this_arg, ConfirmationTarget confirmation_target);
        public interface LDKLogger {
-                void log(String record);
+                void log(long record);
        }
        public static native long LDKLogger_new(LDKLogger impl);
        // struct LDKThirtyTwoBytes C2Tuple_BlockHashChannelManagerZ_get_a(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_BlockHashChannelManagerZ_get_a(long tuple);
        // struct LDKChannelManager *C2Tuple_BlockHashChannelManagerZ_get_b(LDKC2Tuple_BlockHashChannelManagerZ *NONNULL_PTR tuple);
        public static native long C2Tuple_BlockHashChannelManagerZ_get_b(long tuple);
-       public static native boolean LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelConfigDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelConfigDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_OutPointDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_OutPointDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_OutPointDecodeErrorZ_get_err(long arg);
        public interface LDKType {
@@ -736,7 +804,6 @@ public class bindings {
        }
        static { LDKCOption_TypeZ.init(); }
        public static native LDKCOption_TypeZ LDKCOption_TypeZ_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_COption_TypeZDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_COption_TypeZDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_COption_TypeZDecodeErrorZ_get_err(long arg);
        public static class LDKPaymentError {
@@ -757,16 +824,12 @@ public class bindings {
        }
        static { LDKPaymentError.init(); }
        public static native LDKPaymentError LDKPaymentError_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_PaymentIdPaymentErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult_PaymentIdPaymentErrorZ_get_ok(long arg);
        public static native long LDKCResult_PaymentIdPaymentErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_SiPrefixNoneZ_result_ok(long arg);
        public static native SiPrefix LDKCResult_SiPrefixNoneZ_get_ok(long arg);
        public static native void LDKCResult_SiPrefixNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_InvoiceNoneZ_result_ok(long arg);
        public static native long LDKCResult_InvoiceNoneZ_get_ok(long arg);
        public static native void LDKCResult_InvoiceNoneZ_get_err(long arg);
-       public static native boolean LDKCResult_SignedRawInvoiceNoneZ_result_ok(long arg);
        public static native long LDKCResult_SignedRawInvoiceNoneZ_get_ok(long arg);
        public static native void LDKCResult_SignedRawInvoiceNoneZ_get_err(long arg);
        // struct LDKRawInvoice C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_a(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
@@ -775,38 +838,41 @@ public class bindings {
        public static native byte[] C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_b(long tuple);
        // struct LDKInvoiceSignature C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR tuple);
        public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_get_c(long tuple);
-       public static native boolean LDKCResult_PayeePubKeyErrorZ_result_ok(long arg);
        public static native long LDKCResult_PayeePubKeyErrorZ_get_ok(long arg);
        public static native Secp256k1Error LDKCResult_PayeePubKeyErrorZ_get_err(long arg);
-       public static native long LDKCVec_PrivateRouteZ_new(long[] elems);
-       public static native boolean LDKCResult_PositiveTimestampCreationErrorZ_result_ok(long arg);
        public static native long LDKCResult_PositiveTimestampCreationErrorZ_get_ok(long arg);
        public static native CreationError LDKCResult_PositiveTimestampCreationErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NoneSemanticErrorZ_result_ok(long arg);
        public static native void LDKCResult_NoneSemanticErrorZ_get_ok(long arg);
        public static native SemanticError LDKCResult_NoneSemanticErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_InvoiceSemanticErrorZ_result_ok(long arg);
        public static native long LDKCResult_InvoiceSemanticErrorZ_get_ok(long arg);
        public static native SemanticError LDKCResult_InvoiceSemanticErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_DescriptionCreationErrorZ_result_ok(long arg);
        public static native long LDKCResult_DescriptionCreationErrorZ_get_ok(long arg);
        public static native CreationError LDKCResult_DescriptionCreationErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ExpiryTimeCreationErrorZ_result_ok(long arg);
        public static native long LDKCResult_ExpiryTimeCreationErrorZ_get_ok(long arg);
        public static native CreationError LDKCResult_ExpiryTimeCreationErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_PrivateRouteCreationErrorZ_result_ok(long arg);
        public static native long LDKCResult_PrivateRouteCreationErrorZ_get_ok(long arg);
        public static native CreationError LDKCResult_PrivateRouteCreationErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_StringErrorZ_result_ok(long arg);
        public static native String LDKCResult_StringErrorZ_get_ok(long arg);
        public static native Secp256k1Error LDKCResult_StringErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelMonitorUpdateDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelMonitorUpdateDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_HTLCUpdateDecodeErrorZ_result_ok(long arg);
+       public static class LDKCOption_MonitorEventZ {
+               private LDKCOption_MonitorEventZ() {}
+               public final static class Some extends LDKCOption_MonitorEventZ {
+                       public long some;
+                       Some(long some) { this.some = some; }
+               }
+               public final static class None extends LDKCOption_MonitorEventZ {
+                       None() { }
+               }
+               static native void init();
+       }
+       static { LDKCOption_MonitorEventZ.init(); }
+       public static native LDKCOption_MonitorEventZ LDKCOption_MonitorEventZ_ref_from_ptr(long ptr);
+       public static native long LDKCResult_COption_MonitorEventZDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_COption_MonitorEventZDecodeErrorZ_get_err(long arg);
        public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_HTLCUpdateDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NoneMonitorUpdateErrorZ_result_ok(long arg);
        public static native void LDKCResult_NoneMonitorUpdateErrorZ_get_ok(long arg);
        public static native long LDKCResult_NoneMonitorUpdateErrorZ_get_err(long arg);
        // struct LDKOutPoint C2Tuple_OutPointScriptZ_get_a(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR tuple);
@@ -817,129 +883,18 @@ public class bindings {
        public static native int C2Tuple_u32ScriptZ_get_a(long tuple);
        // struct LDKCVec_u8Z C2Tuple_u32ScriptZ_get_b(LDKC2Tuple_u32ScriptZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_u32ScriptZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_u32ScriptZZ_new(long[] elems);
        // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_a(long tuple);
        // struct LDKCVec_C2Tuple_u32ScriptZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR tuple);
        public static native long[] C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZZ_new(long[] elems);
-       public static class LDKPaymentPurpose {
-               private LDKPaymentPurpose() {}
-               public final static class InvoicePayment extends LDKPaymentPurpose {
-                       public byte[] payment_preimage;
-                       public byte[] payment_secret;
-                       public long user_payment_id;
-                       InvoicePayment(byte[] payment_preimage, byte[] payment_secret, long user_payment_id) { this.payment_preimage = payment_preimage; this.payment_secret = payment_secret; this.user_payment_id = user_payment_id; }
-               }
-               public final static class SpontaneousPayment extends LDKPaymentPurpose {
-                       public byte[] spontaneous_payment;
-                       SpontaneousPayment(byte[] spontaneous_payment) { this.spontaneous_payment = spontaneous_payment; }
-               }
-               static native void init();
-       }
-       static { LDKPaymentPurpose.init(); }
-       public static native LDKPaymentPurpose LDKPaymentPurpose_ref_from_ptr(long ptr);
-       public static class LDKClosureReason {
-               private LDKClosureReason() {}
-               public final static class CounterpartyForceClosed extends LDKClosureReason {
-                       public String peer_msg;
-                       CounterpartyForceClosed(String peer_msg) { this.peer_msg = peer_msg; }
-               }
-               public final static class HolderForceClosed extends LDKClosureReason {
-                       HolderForceClosed() { }
-               }
-               public final static class CooperativeClosure extends LDKClosureReason {
-                       CooperativeClosure() { }
-               }
-               public final static class CommitmentTxConfirmed extends LDKClosureReason {
-                       CommitmentTxConfirmed() { }
-               }
-               public final static class ProcessingError extends LDKClosureReason {
-                       public String err;
-                       ProcessingError(String err) { this.err = err; }
-               }
-               public final static class DisconnectedPeer extends LDKClosureReason {
-                       DisconnectedPeer() { }
-               }
-               public final static class OutdatedChannelManager extends LDKClosureReason {
-                       OutdatedChannelManager() { }
-               }
-               static native void init();
-       }
-       static { LDKClosureReason.init(); }
-       public static native LDKClosureReason LDKClosureReason_ref_from_ptr(long ptr);
-       public static class LDKEvent {
-               private LDKEvent() {}
-               public final static class FundingGenerationReady extends LDKEvent {
-                       public byte[] temporary_channel_id;
-                       public long channel_value_satoshis;
-                       public byte[] output_script;
-                       public long user_channel_id;
-                       FundingGenerationReady(byte[] temporary_channel_id, long channel_value_satoshis, byte[] output_script, long user_channel_id) { this.temporary_channel_id = temporary_channel_id; this.channel_value_satoshis = channel_value_satoshis; this.output_script = output_script; this.user_channel_id = user_channel_id; }
-               }
-               public final static class PaymentReceived extends LDKEvent {
-                       public byte[] payment_hash;
-                       public long amt;
-                       public long purpose;
-                       PaymentReceived(byte[] payment_hash, long amt, long purpose) { this.payment_hash = payment_hash; this.amt = amt; this.purpose = purpose; }
-               }
-               public final static class PaymentSent extends LDKEvent {
-                       public byte[] payment_id;
-                       public byte[] payment_preimage;
-                       public byte[] payment_hash;
-                       public long fee_paid_msat;
-                       PaymentSent(byte[] payment_id, byte[] payment_preimage, byte[] payment_hash, long fee_paid_msat) { this.payment_id = payment_id; this.payment_preimage = payment_preimage; this.payment_hash = payment_hash; this.fee_paid_msat = fee_paid_msat; }
-               }
-               public final static class PaymentPathFailed extends LDKEvent {
-                       public byte[] payment_id;
-                       public byte[] payment_hash;
-                       public boolean rejected_by_dest;
-                       public long network_update;
-                       public boolean all_paths_failed;
-                       public long[] path;
-                       public long short_channel_id;
-                       public long retry;
-                       PaymentPathFailed(byte[] payment_id, byte[] payment_hash, boolean rejected_by_dest, long network_update, boolean all_paths_failed, long[] path, long short_channel_id, long retry) { this.payment_id = payment_id; this.payment_hash = payment_hash; this.rejected_by_dest = rejected_by_dest; this.network_update = network_update; this.all_paths_failed = all_paths_failed; this.path = path; this.short_channel_id = short_channel_id; this.retry = retry; }
-               }
-               public final static class PendingHTLCsForwardable extends LDKEvent {
-                       public long time_forwardable;
-                       PendingHTLCsForwardable(long time_forwardable) { this.time_forwardable = time_forwardable; }
-               }
-               public final static class SpendableOutputs extends LDKEvent {
-                       public long[] outputs;
-                       SpendableOutputs(long[] outputs) { this.outputs = outputs; }
-               }
-               public final static class PaymentForwarded extends LDKEvent {
-                       public long fee_earned_msat;
-                       public boolean claim_from_onchain_tx;
-                       PaymentForwarded(long fee_earned_msat, boolean claim_from_onchain_tx) { this.fee_earned_msat = fee_earned_msat; this.claim_from_onchain_tx = claim_from_onchain_tx; }
-               }
-               public final static class ChannelClosed extends LDKEvent {
-                       public byte[] channel_id;
-                       public long user_channel_id;
-                       public long reason;
-                       ChannelClosed(byte[] channel_id, long user_channel_id, long reason) { this.channel_id = channel_id; this.user_channel_id = user_channel_id; this.reason = reason; }
-               }
-               public final static class DiscardFunding extends LDKEvent {
-                       public byte[] channel_id;
-                       public byte[] transaction;
-                       DiscardFunding(byte[] channel_id, byte[] transaction) { this.channel_id = channel_id; this.transaction = transaction; }
-               }
-               static native void init();
-       }
-       static { LDKEvent.init(); }
-       public static native LDKEvent LDKEvent_ref_from_ptr(long ptr);
-       public static native long LDKCVec_EventZ_new(long[] elems);
        // uint32_t C2Tuple_u32TxOutZ_get_a(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple);
        public static native int C2Tuple_u32TxOutZ_get_a(long tuple);
        // struct LDKTxOut C2Tuple_u32TxOutZ_get_b(LDKC2Tuple_u32TxOutZ *NONNULL_PTR tuple);
        public static native long C2Tuple_u32TxOutZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_u32TxOutZZ_new(long[] elems);
        // struct LDKThirtyTwoBytes C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_a(long tuple);
        // struct LDKCVec_C2Tuple_u32TxOutZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR tuple);
        public static native long[] C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_new(long[] elems);
        public static class LDKBalance {
                private LDKBalance() {}
                public final static class ClaimableOnChannelClose extends LDKBalance {
@@ -965,19 +920,14 @@ public class bindings {
        }
        static { LDKBalance.init(); }
        public static native LDKBalance LDKBalance_ref_from_ptr(long ptr);
-       public static native long LDKCVec_BalanceZ_new(long[] elems);
-       public static native boolean LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NoneLightningErrorZ_result_ok(long arg);
        public static native void LDKCResult_NoneLightningErrorZ_get_ok(long arg);
        public static native long LDKCResult_NoneLightningErrorZ_get_err(long arg);
        // struct LDKPublicKey C2Tuple_PublicKeyTypeZ_get_a(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple);
        public static native byte[] C2Tuple_PublicKeyTypeZ_get_a(long tuple);
        // struct LDKType C2Tuple_PublicKeyTypeZ_get_b(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR tuple);
        public static native long C2Tuple_PublicKeyTypeZ_get_b(long tuple);
-       public static native long LDKCVec_C2Tuple_PublicKeyTypeZZ_new(long[] elems);
-       public static native boolean LDKCResult_boolLightningErrorZ_result_ok(long arg);
        public static native boolean LDKCResult_boolLightningErrorZ_get_ok(long arg);
        public static native long LDKCResult_boolLightningErrorZ_get_err(long arg);
        // struct LDKChannelAnnouncement C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_a(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
@@ -986,20 +936,16 @@ public class bindings {
        public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_b(long tuple);
        // struct LDKChannelUpdate C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR tuple);
        public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_get_c(long tuple);
-       public static native long LDKCVec_C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZZ_new(long[] elems);
-       public static native long LDKCVec_NodeAnnouncementZ_new(long[] elems);
-       public static native boolean LDKCResult_CVec_u8ZPeerHandleErrorZ_result_ok(long arg);
        public static native byte[] LDKCResult_CVec_u8ZPeerHandleErrorZ_get_ok(long arg);
        public static native long LDKCResult_CVec_u8ZPeerHandleErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NonePeerHandleErrorZ_result_ok(long arg);
        public static native void LDKCResult_NonePeerHandleErrorZ_get_ok(long arg);
        public static native long LDKCResult_NonePeerHandleErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_boolPeerHandleErrorZ_result_ok(long arg);
        public static native boolean LDKCResult_boolPeerHandleErrorZ_get_ok(long arg);
        public static native long LDKCResult_boolPeerHandleErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NodeIdDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NodeIdDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NodeIdDecodeErrorZ_get_err(long arg);
+       public static native long LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_ok(long arg);
+       public static native long LDKCResult_COption_NetworkUpdateZDecodeErrorZ_get_err(long arg);
        public interface LDKAccess {
                 long get_utxo(byte[] genesis_hash, long short_channel_id);
        }
@@ -1019,23 +965,16 @@ public class bindings {
        }
        static { LDKCOption_AccessZ.init(); }
        public static native LDKCOption_AccessZ LDKCOption_AccessZ_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_DirectionalChannelInfoDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_DirectionalChannelInfoDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelInfoDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelInfoDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelInfoDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_RoutingFeesDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RoutingFeesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NodeAnnouncementInfoDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NodeAnnouncementInfoDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_u64Z_new(long[] elems);
-       public static native boolean LDKCResult_NodeInfoDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NodeInfoDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NodeInfoDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NetworkGraphDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NetworkGraphDecodeErrorZ_get_err(long arg);
        public static class LDKCOption_CVec_NetAddressZZ {
@@ -1051,107 +990,70 @@ public class bindings {
        }
        static { LDKCOption_CVec_NetAddressZZ.init(); }
        public static native LDKCOption_CVec_NetAddressZZ LDKCOption_CVec_NetAddressZZ_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_NetAddressDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NetAddressDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NetAddressDecodeErrorZ_get_err(long arg);
-       public static native long LDKCVec_UpdateAddHTLCZ_new(long[] elems);
-       public static native long LDKCVec_UpdateFulfillHTLCZ_new(long[] elems);
-       public static native long LDKCVec_UpdateFailHTLCZ_new(long[] elems);
-       public static native long LDKCVec_UpdateFailMalformedHTLCZ_new(long[] elems);
-       public static native boolean LDKCResult_AcceptChannelDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_AcceptChannelDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_AcceptChannelDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_AnnouncementSignaturesDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_AnnouncementSignaturesDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelReestablishDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelReestablishDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelReestablishDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ClosingSignedDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ClosingSignedDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ClosingSignedDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ClosingSignedFeeRangeDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_CommitmentSignedDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_CommitmentSignedDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_CommitmentSignedDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_FundingCreatedDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_FundingCreatedDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_FundingCreatedDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_FundingSignedDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_FundingSignedDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_FundingSignedDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_FundingLockedDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_FundingLockedDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_FundingLockedDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_InitDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_InitDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_InitDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_OpenChannelDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_OpenChannelDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_OpenChannelDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_RevokeAndACKDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_RevokeAndACKDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_RevokeAndACKDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ShutdownDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ShutdownDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ShutdownDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UpdateFailHTLCDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UpdateFailHTLCDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UpdateFailHTLCDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UpdateFeeDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UpdateFeeDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UpdateFeeDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UpdateFulfillHTLCDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UpdateFulfillHTLCDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UpdateAddHTLCDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UpdateAddHTLCDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UpdateAddHTLCDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_PingDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_PingDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_PingDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_PongDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_PongDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_PongDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelAnnouncementDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelAnnouncementDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UnsignedChannelUpdateDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UnsignedChannelUpdateDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ChannelUpdateDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ChannelUpdateDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ChannelUpdateDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ErrorMessageDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ErrorMessageDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ErrorMessageDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_NodeAnnouncementDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_NodeAnnouncementDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_NodeAnnouncementDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_QueryShortChannelIdsDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_QueryShortChannelIdsDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_QueryChannelRangeDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_QueryChannelRangeDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_QueryChannelRangeDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_ReplyChannelRangeDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_ReplyChannelRangeDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_ReplyChannelRangeDecodeErrorZ_get_err(long arg);
-       public static native boolean LDKCResult_GossipTimestampFilterDecodeErrorZ_result_ok(long arg);
        public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_ok(long arg);
        public static native long LDKCResult_GossipTimestampFilterDecodeErrorZ_get_err(long arg);
        public static class LDKSignOrCreationError {
@@ -1167,7 +1069,6 @@ public class bindings {
        }
        static { LDKSignOrCreationError.init(); }
        public static native LDKSignOrCreationError LDKSignOrCreationError_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_InvoiceSignOrCreationErrorZ_result_ok(long arg);
        public static native long LDKCResult_InvoiceSignOrCreationErrorZ_get_ok(long arg);
        public static native long LDKCResult_InvoiceSignOrCreationErrorZ_get_err(long arg);
        public interface LDKFilter {
@@ -1192,10 +1093,8 @@ public class bindings {
        }
        static { LDKCOption_FilterZ.init(); }
        public static native LDKCOption_FilterZ LDKCOption_FilterZ_ref_from_ptr(long ptr);
-       public static native boolean LDKCResult_LockedChannelMonitorNoneZ_result_ok(long arg);
        public static native long LDKCResult_LockedChannelMonitorNoneZ_get_ok(long arg);
        public static native void LDKCResult_LockedChannelMonitorNoneZ_get_err(long arg);
-       public static native long LDKCVec_OutPointZ_new(long[] elems);
        public interface LDKMessageSendEventsProvider {
                 long[] get_and_clear_pending_msg_events();
        }
@@ -1442,6 +1341,8 @@ public class bindings {
        public static native long TxOut_new(byte[] script_pubkey, long value);
        // void TxOut_free(struct LDKTxOut _res);
        public static native void TxOut_free(long _res);
+       // uint64_t TxOut_clone_ptr(LDKTxOut *NONNULL_PTR arg);
+       public static native long TxOut_clone_ptr(long arg);
        // struct LDKTxOut TxOut_clone(const struct LDKTxOut *NONNULL_PTR orig);
        public static native long TxOut_clone(long orig);
        // void Str_free(struct LDKStr _res);
@@ -1450,38 +1351,56 @@ public class bindings {
        public static native long CResult_SecretKeyErrorZ_ok(byte[] o);
        // struct LDKCResult_SecretKeyErrorZ CResult_SecretKeyErrorZ_err(enum LDKSecp256k1Error e);
        public static native long CResult_SecretKeyErrorZ_err(Secp256k1Error e);
+       // bool CResult_SecretKeyErrorZ_is_ok(const struct LDKCResult_SecretKeyErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_SecretKeyErrorZ_is_ok(long o);
        // void CResult_SecretKeyErrorZ_free(struct LDKCResult_SecretKeyErrorZ _res);
        public static native void CResult_SecretKeyErrorZ_free(long _res);
        // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_ok(struct LDKPublicKey o);
        public static native long CResult_PublicKeyErrorZ_ok(byte[] o);
        // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_err(enum LDKSecp256k1Error e);
        public static native long CResult_PublicKeyErrorZ_err(Secp256k1Error e);
+       // bool CResult_PublicKeyErrorZ_is_ok(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PublicKeyErrorZ_is_ok(long o);
        // void CResult_PublicKeyErrorZ_free(struct LDKCResult_PublicKeyErrorZ _res);
        public static native void CResult_PublicKeyErrorZ_free(long _res);
+       // uint64_t CResult_PublicKeyErrorZ_clone_ptr(LDKCResult_PublicKeyErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PublicKeyErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PublicKeyErrorZ CResult_PublicKeyErrorZ_clone(const struct LDKCResult_PublicKeyErrorZ *NONNULL_PTR orig);
        public static native long CResult_PublicKeyErrorZ_clone(long orig);
        // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_ok(struct LDKTxCreationKeys o);
        public static native long CResult_TxCreationKeysDecodeErrorZ_ok(long o);
        // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_TxCreationKeysDecodeErrorZ_err(long e);
+       // bool CResult_TxCreationKeysDecodeErrorZ_is_ok(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_TxCreationKeysDecodeErrorZ_is_ok(long o);
        // void CResult_TxCreationKeysDecodeErrorZ_free(struct LDKCResult_TxCreationKeysDecodeErrorZ _res);
        public static native void CResult_TxCreationKeysDecodeErrorZ_free(long _res);
+       // uint64_t CResult_TxCreationKeysDecodeErrorZ_clone_ptr(LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_TxCreationKeysDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_TxCreationKeysDecodeErrorZ CResult_TxCreationKeysDecodeErrorZ_clone(const struct LDKCResult_TxCreationKeysDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_TxCreationKeysDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_ok(struct LDKChannelPublicKeys o);
        public static native long CResult_ChannelPublicKeysDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelPublicKeysDecodeErrorZ_err(long e);
+       // bool CResult_ChannelPublicKeysDecodeErrorZ_is_ok(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelPublicKeysDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelPublicKeysDecodeErrorZ_free(struct LDKCResult_ChannelPublicKeysDecodeErrorZ _res);
        public static native void CResult_ChannelPublicKeysDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelPublicKeysDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelPublicKeysDecodeErrorZ CResult_ChannelPublicKeysDecodeErrorZ_clone(const struct LDKCResult_ChannelPublicKeysDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelPublicKeysDecodeErrorZ_clone(long orig);
        // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_ok(struct LDKTxCreationKeys o);
        public static native long CResult_TxCreationKeysErrorZ_ok(long o);
        // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_err(enum LDKSecp256k1Error e);
        public static native long CResult_TxCreationKeysErrorZ_err(Secp256k1Error e);
+       // bool CResult_TxCreationKeysErrorZ_is_ok(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_TxCreationKeysErrorZ_is_ok(long o);
        // void CResult_TxCreationKeysErrorZ_free(struct LDKCResult_TxCreationKeysErrorZ _res);
        public static native void CResult_TxCreationKeysErrorZ_free(long _res);
+       // uint64_t CResult_TxCreationKeysErrorZ_clone_ptr(LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR arg);
+       public static native long CResult_TxCreationKeysErrorZ_clone_ptr(long arg);
        // struct LDKCResult_TxCreationKeysErrorZ CResult_TxCreationKeysErrorZ_clone(const struct LDKCResult_TxCreationKeysErrorZ *NONNULL_PTR orig);
        public static native long CResult_TxCreationKeysErrorZ_clone(long orig);
        // struct LDKCOption_u32Z COption_u32Z_some(uint32_t o);
@@ -1490,30 +1409,44 @@ public class bindings {
        public static native long COption_u32Z_none();
        // void COption_u32Z_free(struct LDKCOption_u32Z _res);
        public static native void COption_u32Z_free(long _res);
+       // uint64_t COption_u32Z_clone_ptr(LDKCOption_u32Z *NONNULL_PTR arg);
+       public static native long COption_u32Z_clone_ptr(long arg);
        // struct LDKCOption_u32Z COption_u32Z_clone(const struct LDKCOption_u32Z *NONNULL_PTR orig);
        public static native long COption_u32Z_clone(long orig);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(struct LDKHTLCOutputInCommitment o);
        public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_ok(long o);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_err(long e);
+       // bool CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_HTLCOutputInCommitmentDecodeErrorZ_is_ok(long o);
        // void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ _res);
        public static native void CResult_HTLCOutputInCommitmentDecodeErrorZ_free(long _res);
+       // uint64_t CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(const struct LDKCResult_HTLCOutputInCommitmentDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_HTLCOutputInCommitmentDecodeErrorZ_clone(long orig);
        // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(struct LDKCounterpartyChannelTransactionParameters o);
        public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_ok(long o);
        // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_err(long e);
+       // bool CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_is_ok(long o);
        // void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ _res);
        public static native void CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_free(long _res);
+       // uint64_t CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_CounterpartyChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_CounterpartyChannelTransactionParametersDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_ok(struct LDKChannelTransactionParameters o);
        public static native long CResult_ChannelTransactionParametersDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelTransactionParametersDecodeErrorZ_err(long e);
+       // bool CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelTransactionParametersDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelTransactionParametersDecodeErrorZ_free(struct LDKCResult_ChannelTransactionParametersDecodeErrorZ _res);
        public static native void CResult_ChannelTransactionParametersDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelTransactionParametersDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelTransactionParametersDecodeErrorZ CResult_ChannelTransactionParametersDecodeErrorZ_clone(const struct LDKCResult_ChannelTransactionParametersDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelTransactionParametersDecodeErrorZ_clone(long orig);
        // void CVec_SignatureZ_free(struct LDKCVec_SignatureZ _res);
@@ -1522,76 +1455,112 @@ public class bindings {
        public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_ok(long o);
        // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_err(long e);
+       // bool CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_HolderCommitmentTransactionDecodeErrorZ_is_ok(long o);
        // void CResult_HolderCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ _res);
        public static native void CResult_HolderCommitmentTransactionDecodeErrorZ_free(long _res);
+       // uint64_t CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ CResult_HolderCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_HolderCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_HolderCommitmentTransactionDecodeErrorZ_clone(long orig);
        // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(struct LDKBuiltCommitmentTransaction o);
        public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_ok(long o);
        // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_err(long e);
+       // bool CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_BuiltCommitmentTransactionDecodeErrorZ_is_ok(long o);
        // void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ _res);
        public static native void CResult_BuiltCommitmentTransactionDecodeErrorZ_free(long _res);
+       // uint64_t CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_BuiltCommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_BuiltCommitmentTransactionDecodeErrorZ_clone(long orig);
        // struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_ok(struct LDKTrustedClosingTransaction o);
        public static native long CResult_TrustedClosingTransactionNoneZ_ok(long o);
        // struct LDKCResult_TrustedClosingTransactionNoneZ CResult_TrustedClosingTransactionNoneZ_err(void);
        public static native long CResult_TrustedClosingTransactionNoneZ_err();
+       // bool CResult_TrustedClosingTransactionNoneZ_is_ok(const struct LDKCResult_TrustedClosingTransactionNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_TrustedClosingTransactionNoneZ_is_ok(long o);
        // void CResult_TrustedClosingTransactionNoneZ_free(struct LDKCResult_TrustedClosingTransactionNoneZ _res);
        public static native void CResult_TrustedClosingTransactionNoneZ_free(long _res);
        // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_ok(struct LDKCommitmentTransaction o);
        public static native long CResult_CommitmentTransactionDecodeErrorZ_ok(long o);
        // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_CommitmentTransactionDecodeErrorZ_err(long e);
+       // bool CResult_CommitmentTransactionDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CommitmentTransactionDecodeErrorZ_is_ok(long o);
        // void CResult_CommitmentTransactionDecodeErrorZ_free(struct LDKCResult_CommitmentTransactionDecodeErrorZ _res);
        public static native void CResult_CommitmentTransactionDecodeErrorZ_free(long _res);
+       // uint64_t CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CommitmentTransactionDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CommitmentTransactionDecodeErrorZ CResult_CommitmentTransactionDecodeErrorZ_clone(const struct LDKCResult_CommitmentTransactionDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_CommitmentTransactionDecodeErrorZ_clone(long orig);
        // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_ok(struct LDKTrustedCommitmentTransaction o);
        public static native long CResult_TrustedCommitmentTransactionNoneZ_ok(long o);
        // struct LDKCResult_TrustedCommitmentTransactionNoneZ CResult_TrustedCommitmentTransactionNoneZ_err(void);
        public static native long CResult_TrustedCommitmentTransactionNoneZ_err();
+       // bool CResult_TrustedCommitmentTransactionNoneZ_is_ok(const struct LDKCResult_TrustedCommitmentTransactionNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_TrustedCommitmentTransactionNoneZ_is_ok(long o);
        // void CResult_TrustedCommitmentTransactionNoneZ_free(struct LDKCResult_TrustedCommitmentTransactionNoneZ _res);
        public static native void CResult_TrustedCommitmentTransactionNoneZ_free(long _res);
        // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_ok(struct LDKCVec_SignatureZ o);
        public static native long CResult_CVec_SignatureZNoneZ_ok(byte[][] o);
        // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_err(void);
        public static native long CResult_CVec_SignatureZNoneZ_err();
+       // bool CResult_CVec_SignatureZNoneZ_is_ok(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_CVec_SignatureZNoneZ_is_ok(long o);
        // void CResult_CVec_SignatureZNoneZ_free(struct LDKCResult_CVec_SignatureZNoneZ _res);
        public static native void CResult_CVec_SignatureZNoneZ_free(long _res);
+       // uint64_t CResult_CVec_SignatureZNoneZ_clone_ptr(LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR arg);
+       public static native long CResult_CVec_SignatureZNoneZ_clone_ptr(long arg);
        // struct LDKCResult_CVec_SignatureZNoneZ CResult_CVec_SignatureZNoneZ_clone(const struct LDKCResult_CVec_SignatureZNoneZ *NONNULL_PTR orig);
        public static native long CResult_CVec_SignatureZNoneZ_clone(long orig);
        // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_ok(struct LDKShutdownScript o);
        public static native long CResult_ShutdownScriptDecodeErrorZ_ok(long o);
        // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ShutdownScriptDecodeErrorZ_err(long e);
+       // bool CResult_ShutdownScriptDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ShutdownScriptDecodeErrorZ_is_ok(long o);
        // void CResult_ShutdownScriptDecodeErrorZ_free(struct LDKCResult_ShutdownScriptDecodeErrorZ _res);
        public static native void CResult_ShutdownScriptDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ShutdownScriptDecodeErrorZ_clone_ptr(LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ShutdownScriptDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ShutdownScriptDecodeErrorZ CResult_ShutdownScriptDecodeErrorZ_clone(const struct LDKCResult_ShutdownScriptDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ShutdownScriptDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_ok(struct LDKShutdownScript o);
        public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_ok(long o);
        // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_err(struct LDKInvalidShutdownScript e);
        public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_err(long e);
+       // bool CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR o);
+       public static native boolean CResult_ShutdownScriptInvalidShutdownScriptZ_is_ok(long o);
        // void CResult_ShutdownScriptInvalidShutdownScriptZ_free(struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ _res);
        public static native void CResult_ShutdownScriptInvalidShutdownScriptZ_free(long _res);
+       // uint64_t CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR arg);
+       public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_clone_ptr(long arg);
        // struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ CResult_ShutdownScriptInvalidShutdownScriptZ_clone(const struct LDKCResult_ShutdownScriptInvalidShutdownScriptZ *NONNULL_PTR orig);
        public static native long CResult_ShutdownScriptInvalidShutdownScriptZ_clone(long orig);
        // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_ok(void);
        public static native long CResult_NoneErrorZ_ok();
        // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_err(enum LDKIOError e);
        public static native long CResult_NoneErrorZ_err(IOError e);
+       // bool CResult_NoneErrorZ_is_ok(const struct LDKCResult_NoneErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneErrorZ_is_ok(long o);
        // void CResult_NoneErrorZ_free(struct LDKCResult_NoneErrorZ _res);
        public static native void CResult_NoneErrorZ_free(long _res);
+       // uint64_t CResult_NoneErrorZ_clone_ptr(LDKCResult_NoneErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NoneErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneErrorZ CResult_NoneErrorZ_clone(const struct LDKCResult_NoneErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneErrorZ_clone(long orig);
        // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_ok(struct LDKRouteHop o);
        public static native long CResult_RouteHopDecodeErrorZ_ok(long o);
        // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RouteHopDecodeErrorZ_err(long e);
+       // bool CResult_RouteHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RouteHopDecodeErrorZ_is_ok(long o);
        // void CResult_RouteHopDecodeErrorZ_free(struct LDKCResult_RouteHopDecodeErrorZ _res);
        public static native void CResult_RouteHopDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RouteHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RouteHopDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteHopDecodeErrorZ CResult_RouteHopDecodeErrorZ_clone(const struct LDKCResult_RouteHopDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteHopDecodeErrorZ_clone(long orig);
        // void CVec_RouteHopZ_free(struct LDKCVec_RouteHopZ _res);
@@ -1602,16 +1571,24 @@ public class bindings {
        public static native long CResult_RouteDecodeErrorZ_ok(long o);
        // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RouteDecodeErrorZ_err(long e);
+       // bool CResult_RouteDecodeErrorZ_is_ok(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RouteDecodeErrorZ_is_ok(long o);
        // void CResult_RouteDecodeErrorZ_free(struct LDKCResult_RouteDecodeErrorZ _res);
        public static native void CResult_RouteDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RouteDecodeErrorZ_clone_ptr(LDKCResult_RouteDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RouteDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteDecodeErrorZ CResult_RouteDecodeErrorZ_clone(const struct LDKCResult_RouteDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteDecodeErrorZ_clone(long orig);
        // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_ok(struct LDKRouteParameters o);
        public static native long CResult_RouteParametersDecodeErrorZ_ok(long o);
        // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RouteParametersDecodeErrorZ_err(long e);
+       // bool CResult_RouteParametersDecodeErrorZ_is_ok(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RouteParametersDecodeErrorZ_is_ok(long o);
        // void CResult_RouteParametersDecodeErrorZ_free(struct LDKCResult_RouteParametersDecodeErrorZ _res);
        public static native void CResult_RouteParametersDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RouteParametersDecodeErrorZ_clone_ptr(LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RouteParametersDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteParametersDecodeErrorZ CResult_RouteParametersDecodeErrorZ_clone(const struct LDKCResult_RouteParametersDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteParametersDecodeErrorZ_clone(long orig);
        // void CVec_RouteHintZ_free(struct LDKCVec_RouteHintZ _res);
@@ -1622,14 +1599,20 @@ public class bindings {
        public static native long COption_u64Z_none();
        // void COption_u64Z_free(struct LDKCOption_u64Z _res);
        public static native void COption_u64Z_free(long _res);
+       // uint64_t COption_u64Z_clone_ptr(LDKCOption_u64Z *NONNULL_PTR arg);
+       public static native long COption_u64Z_clone_ptr(long arg);
        // struct LDKCOption_u64Z COption_u64Z_clone(const struct LDKCOption_u64Z *NONNULL_PTR orig);
        public static native long COption_u64Z_clone(long orig);
        // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_ok(struct LDKPayee o);
        public static native long CResult_PayeeDecodeErrorZ_ok(long o);
        // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_PayeeDecodeErrorZ_err(long e);
+       // bool CResult_PayeeDecodeErrorZ_is_ok(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PayeeDecodeErrorZ_is_ok(long o);
        // void CResult_PayeeDecodeErrorZ_free(struct LDKCResult_PayeeDecodeErrorZ _res);
        public static native void CResult_PayeeDecodeErrorZ_free(long _res);
+       // uint64_t CResult_PayeeDecodeErrorZ_clone_ptr(LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PayeeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PayeeDecodeErrorZ CResult_PayeeDecodeErrorZ_clone(const struct LDKCResult_PayeeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_PayeeDecodeErrorZ_clone(long orig);
        // void CVec_RouteHintHopZ_free(struct LDKCVec_RouteHintHopZ _res);
@@ -1638,16 +1621,24 @@ public class bindings {
        public static native long CResult_RouteHintDecodeErrorZ_ok(long o);
        // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RouteHintDecodeErrorZ_err(long e);
+       // bool CResult_RouteHintDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RouteHintDecodeErrorZ_is_ok(long o);
        // void CResult_RouteHintDecodeErrorZ_free(struct LDKCResult_RouteHintDecodeErrorZ _res);
        public static native void CResult_RouteHintDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RouteHintDecodeErrorZ_clone_ptr(LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RouteHintDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteHintDecodeErrorZ CResult_RouteHintDecodeErrorZ_clone(const struct LDKCResult_RouteHintDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteHintDecodeErrorZ_clone(long orig);
        // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_ok(struct LDKRouteHintHop o);
        public static native long CResult_RouteHintHopDecodeErrorZ_ok(long o);
        // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RouteHintHopDecodeErrorZ_err(long e);
+       // bool CResult_RouteHintHopDecodeErrorZ_is_ok(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RouteHintHopDecodeErrorZ_is_ok(long o);
        // void CResult_RouteHintHopDecodeErrorZ_free(struct LDKCResult_RouteHintHopDecodeErrorZ _res);
        public static native void CResult_RouteHintHopDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RouteHintHopDecodeErrorZ_clone_ptr(LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RouteHintHopDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteHintHopDecodeErrorZ CResult_RouteHintHopDecodeErrorZ_clone(const struct LDKCResult_RouteHintHopDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteHintHopDecodeErrorZ_clone(long orig);
        // void CVec_ChannelDetailsZ_free(struct LDKCVec_ChannelDetailsZ _res);
@@ -1656,18 +1647,28 @@ public class bindings {
        public static native long CResult_RouteLightningErrorZ_ok(long o);
        // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_err(struct LDKLightningError e);
        public static native long CResult_RouteLightningErrorZ_err(long e);
+       // bool CResult_RouteLightningErrorZ_is_ok(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RouteLightningErrorZ_is_ok(long o);
        // void CResult_RouteLightningErrorZ_free(struct LDKCResult_RouteLightningErrorZ _res);
        public static native void CResult_RouteLightningErrorZ_free(long _res);
+       // uint64_t CResult_RouteLightningErrorZ_clone_ptr(LDKCResult_RouteLightningErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RouteLightningErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RouteLightningErrorZ CResult_RouteLightningErrorZ_clone(const struct LDKCResult_RouteLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_RouteLightningErrorZ_clone(long orig);
        // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_ok(struct LDKTxOut o);
        public static native long CResult_TxOutAccessErrorZ_ok(long o);
        // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_err(enum LDKAccessError e);
        public static native long CResult_TxOutAccessErrorZ_err(AccessError e);
+       // bool CResult_TxOutAccessErrorZ_is_ok(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_TxOutAccessErrorZ_is_ok(long o);
        // void CResult_TxOutAccessErrorZ_free(struct LDKCResult_TxOutAccessErrorZ _res);
        public static native void CResult_TxOutAccessErrorZ_free(long _res);
+       // uint64_t CResult_TxOutAccessErrorZ_clone_ptr(LDKCResult_TxOutAccessErrorZ *NONNULL_PTR arg);
+       public static native long CResult_TxOutAccessErrorZ_clone_ptr(long arg);
        // struct LDKCResult_TxOutAccessErrorZ CResult_TxOutAccessErrorZ_clone(const struct LDKCResult_TxOutAccessErrorZ *NONNULL_PTR orig);
        public static native long CResult_TxOutAccessErrorZ_clone(long orig);
+       // uint64_t C2Tuple_usizeTransactionZ_clone_ptr(LDKC2Tuple_usizeTransactionZ *NONNULL_PTR arg);
+       public static native long C2Tuple_usizeTransactionZ_clone_ptr(long arg);
        // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_clone(const struct LDKC2Tuple_usizeTransactionZ *NONNULL_PTR orig);
        public static native long C2Tuple_usizeTransactionZ_clone(long orig);
        // struct LDKC2Tuple_usizeTransactionZ C2Tuple_usizeTransactionZ_new(uintptr_t a, struct LDKTransaction b);
@@ -1682,8 +1683,12 @@ public class bindings {
        public static native long CResult_NoneChannelMonitorUpdateErrZ_ok();
        // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_err(enum LDKChannelMonitorUpdateErr e);
        public static native long CResult_NoneChannelMonitorUpdateErrZ_err(ChannelMonitorUpdateErr e);
+       // bool CResult_NoneChannelMonitorUpdateErrZ_is_ok(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneChannelMonitorUpdateErrZ_is_ok(long o);
        // void CResult_NoneChannelMonitorUpdateErrZ_free(struct LDKCResult_NoneChannelMonitorUpdateErrZ _res);
        public static native void CResult_NoneChannelMonitorUpdateErrZ_free(long _res);
+       // uint64_t CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR arg);
+       public static native long CResult_NoneChannelMonitorUpdateErrZ_clone_ptr(long arg);
        // struct LDKCResult_NoneChannelMonitorUpdateErrZ CResult_NoneChannelMonitorUpdateErrZ_clone(const struct LDKCResult_NoneChannelMonitorUpdateErrZ *NONNULL_PTR orig);
        public static native long CResult_NoneChannelMonitorUpdateErrZ_clone(long orig);
        // void CVec_MonitorEventZ_free(struct LDKCVec_MonitorEventZ _res);
@@ -1694,88 +1699,166 @@ public class bindings {
        public static native long COption_C2Tuple_usizeTransactionZZ_none();
        // void COption_C2Tuple_usizeTransactionZZ_free(struct LDKCOption_C2Tuple_usizeTransactionZZ _res);
        public static native void COption_C2Tuple_usizeTransactionZZ_free(long _res);
+       // uint64_t COption_C2Tuple_usizeTransactionZZ_clone_ptr(LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR arg);
+       public static native long COption_C2Tuple_usizeTransactionZZ_clone_ptr(long arg);
        // struct LDKCOption_C2Tuple_usizeTransactionZZ COption_C2Tuple_usizeTransactionZZ_clone(const struct LDKCOption_C2Tuple_usizeTransactionZZ *NONNULL_PTR orig);
        public static native long COption_C2Tuple_usizeTransactionZZ_clone(long orig);
+       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_some(struct LDKClosureReason o);
+       public static native long COption_ClosureReasonZ_some(long o);
+       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_none(void);
+       public static native long COption_ClosureReasonZ_none();
+       // void COption_ClosureReasonZ_free(struct LDKCOption_ClosureReasonZ _res);
+       public static native void COption_ClosureReasonZ_free(long _res);
+       // uint64_t COption_ClosureReasonZ_clone_ptr(LDKCOption_ClosureReasonZ *NONNULL_PTR arg);
+       public static native long COption_ClosureReasonZ_clone_ptr(long arg);
+       // struct LDKCOption_ClosureReasonZ COption_ClosureReasonZ_clone(const struct LDKCOption_ClosureReasonZ *NONNULL_PTR orig);
+       public static native long COption_ClosureReasonZ_clone(long orig);
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_ok(struct LDKCOption_ClosureReasonZ o);
+       public static native long CResult_COption_ClosureReasonZDecodeErrorZ_ok(long o);
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_COption_ClosureReasonZDecodeErrorZ_err(long e);
+       // bool CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_COption_ClosureReasonZDecodeErrorZ_is_ok(long o);
+       // void CResult_COption_ClosureReasonZDecodeErrorZ_free(struct LDKCResult_COption_ClosureReasonZDecodeErrorZ _res);
+       public static native void CResult_COption_ClosureReasonZDecodeErrorZ_free(long _res);
+       // uint64_t CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_COption_ClosureReasonZDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ CResult_COption_ClosureReasonZDecodeErrorZ_clone(const struct LDKCResult_COption_ClosureReasonZDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_COption_ClosureReasonZDecodeErrorZ_clone(long orig);
        // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_some(struct LDKNetworkUpdate o);
        public static native long COption_NetworkUpdateZ_some(long o);
        // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_none(void);
        public static native long COption_NetworkUpdateZ_none();
        // void COption_NetworkUpdateZ_free(struct LDKCOption_NetworkUpdateZ _res);
        public static native void COption_NetworkUpdateZ_free(long _res);
+       // uint64_t COption_NetworkUpdateZ_clone_ptr(LDKCOption_NetworkUpdateZ *NONNULL_PTR arg);
+       public static native long COption_NetworkUpdateZ_clone_ptr(long arg);
        // struct LDKCOption_NetworkUpdateZ COption_NetworkUpdateZ_clone(const struct LDKCOption_NetworkUpdateZ *NONNULL_PTR orig);
        public static native long COption_NetworkUpdateZ_clone(long orig);
        // void CVec_SpendableOutputDescriptorZ_free(struct LDKCVec_SpendableOutputDescriptorZ _res);
        public static native void CVec_SpendableOutputDescriptorZ_free(long[] _res);
+       // struct LDKCOption_EventZ COption_EventZ_some(struct LDKEvent o);
+       public static native long COption_EventZ_some(long o);
+       // struct LDKCOption_EventZ COption_EventZ_none(void);
+       public static native long COption_EventZ_none();
+       // void COption_EventZ_free(struct LDKCOption_EventZ _res);
+       public static native void COption_EventZ_free(long _res);
+       // uint64_t COption_EventZ_clone_ptr(LDKCOption_EventZ *NONNULL_PTR arg);
+       public static native long COption_EventZ_clone_ptr(long arg);
+       // struct LDKCOption_EventZ COption_EventZ_clone(const struct LDKCOption_EventZ *NONNULL_PTR orig);
+       public static native long COption_EventZ_clone(long orig);
+       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_ok(struct LDKCOption_EventZ o);
+       public static native long CResult_COption_EventZDecodeErrorZ_ok(long o);
+       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_COption_EventZDecodeErrorZ_err(long e);
+       // bool CResult_COption_EventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_COption_EventZDecodeErrorZ_is_ok(long o);
+       // void CResult_COption_EventZDecodeErrorZ_free(struct LDKCResult_COption_EventZDecodeErrorZ _res);
+       public static native void CResult_COption_EventZDecodeErrorZ_free(long _res);
+       // uint64_t CResult_COption_EventZDecodeErrorZ_clone_ptr(LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_COption_EventZDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_COption_EventZDecodeErrorZ CResult_COption_EventZDecodeErrorZ_clone(const struct LDKCResult_COption_EventZDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_COption_EventZDecodeErrorZ_clone(long orig);
        // void CVec_MessageSendEventZ_free(struct LDKCVec_MessageSendEventZ _res);
        public static native void CVec_MessageSendEventZ_free(long[] _res);
        // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_ok(struct LDKInitFeatures o);
        public static native long CResult_InitFeaturesDecodeErrorZ_ok(long o);
        // struct LDKCResult_InitFeaturesDecodeErrorZ CResult_InitFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_InitFeaturesDecodeErrorZ_err(long e);
+       // bool CResult_InitFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InitFeaturesDecodeErrorZ_is_ok(long o);
        // void CResult_InitFeaturesDecodeErrorZ_free(struct LDKCResult_InitFeaturesDecodeErrorZ _res);
        public static native void CResult_InitFeaturesDecodeErrorZ_free(long _res);
        // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_ok(struct LDKNodeFeatures o);
        public static native long CResult_NodeFeaturesDecodeErrorZ_ok(long o);
        // struct LDKCResult_NodeFeaturesDecodeErrorZ CResult_NodeFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NodeFeaturesDecodeErrorZ_err(long e);
+       // bool CResult_NodeFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_NodeFeaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NodeFeaturesDecodeErrorZ_is_ok(long o);
        // void CResult_NodeFeaturesDecodeErrorZ_free(struct LDKCResult_NodeFeaturesDecodeErrorZ _res);
        public static native void CResult_NodeFeaturesDecodeErrorZ_free(long _res);
        // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_ok(struct LDKChannelFeatures o);
        public static native long CResult_ChannelFeaturesDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelFeaturesDecodeErrorZ CResult_ChannelFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelFeaturesDecodeErrorZ_err(long e);
+       // bool CResult_ChannelFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_ChannelFeaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelFeaturesDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelFeaturesDecodeErrorZ_free(struct LDKCResult_ChannelFeaturesDecodeErrorZ _res);
        public static native void CResult_ChannelFeaturesDecodeErrorZ_free(long _res);
        // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_ok(struct LDKInvoiceFeatures o);
        public static native long CResult_InvoiceFeaturesDecodeErrorZ_ok(long o);
        // struct LDKCResult_InvoiceFeaturesDecodeErrorZ CResult_InvoiceFeaturesDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_InvoiceFeaturesDecodeErrorZ_err(long e);
+       // bool CResult_InvoiceFeaturesDecodeErrorZ_is_ok(const struct LDKCResult_InvoiceFeaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InvoiceFeaturesDecodeErrorZ_is_ok(long o);
        // void CResult_InvoiceFeaturesDecodeErrorZ_free(struct LDKCResult_InvoiceFeaturesDecodeErrorZ _res);
        public static native void CResult_InvoiceFeaturesDecodeErrorZ_free(long _res);
        // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_ok(struct LDKScoringParameters o);
        public static native long CResult_ScoringParametersDecodeErrorZ_ok(long o);
        // struct LDKCResult_ScoringParametersDecodeErrorZ CResult_ScoringParametersDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ScoringParametersDecodeErrorZ_err(long e);
+       // bool CResult_ScoringParametersDecodeErrorZ_is_ok(const struct LDKCResult_ScoringParametersDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ScoringParametersDecodeErrorZ_is_ok(long o);
        // void CResult_ScoringParametersDecodeErrorZ_free(struct LDKCResult_ScoringParametersDecodeErrorZ _res);
        public static native void CResult_ScoringParametersDecodeErrorZ_free(long _res);
        // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_ok(struct LDKScorer o);
        public static native long CResult_ScorerDecodeErrorZ_ok(long o);
        // struct LDKCResult_ScorerDecodeErrorZ CResult_ScorerDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ScorerDecodeErrorZ_err(long e);
+       // bool CResult_ScorerDecodeErrorZ_is_ok(const struct LDKCResult_ScorerDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ScorerDecodeErrorZ_is_ok(long o);
        // void CResult_ScorerDecodeErrorZ_free(struct LDKCResult_ScorerDecodeErrorZ _res);
        public static native void CResult_ScorerDecodeErrorZ_free(long _res);
        // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKDelayedPaymentOutputDescriptor o);
        public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_ok(long o);
        // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_err(long e);
+       // bool CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_is_ok(long o);
        // void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ _res);
        public static native void CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_free(long _res);
+       // uint64_t CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_DelayedPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_DelayedPaymentOutputDescriptorDecodeErrorZ_clone(long orig);
        // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(struct LDKStaticPaymentOutputDescriptor o);
        public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_ok(long o);
        // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_err(long e);
+       // bool CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_StaticPaymentOutputDescriptorDecodeErrorZ_is_ok(long o);
        // void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ _res);
        public static native void CResult_StaticPaymentOutputDescriptorDecodeErrorZ_free(long _res);
+       // uint64_t CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_StaticPaymentOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_StaticPaymentOutputDescriptorDecodeErrorZ_clone(long orig);
        // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_ok(struct LDKSpendableOutputDescriptor o);
        public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_ok(long o);
        // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_err(long e);
+       // bool CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_SpendableOutputDescriptorDecodeErrorZ_is_ok(long o);
        // void CResult_SpendableOutputDescriptorDecodeErrorZ_free(struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ _res);
        public static native void CResult_SpendableOutputDescriptorDecodeErrorZ_free(long _res);
+       // uint64_t CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ CResult_SpendableOutputDescriptorDecodeErrorZ_clone(const struct LDKCResult_SpendableOutputDescriptorDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_SpendableOutputDescriptorDecodeErrorZ_clone(long orig);
        // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_ok(void);
        public static native long CResult_NoneNoneZ_ok();
        // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_err(void);
        public static native long CResult_NoneNoneZ_err();
+       // bool CResult_NoneNoneZ_is_ok(const struct LDKCResult_NoneNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneNoneZ_is_ok(long o);
        // void CResult_NoneNoneZ_free(struct LDKCResult_NoneNoneZ _res);
        public static native void CResult_NoneNoneZ_free(long _res);
+       // uint64_t CResult_NoneNoneZ_clone_ptr(LDKCResult_NoneNoneZ *NONNULL_PTR arg);
+       public static native long CResult_NoneNoneZ_clone_ptr(long arg);
        // struct LDKCResult_NoneNoneZ CResult_NoneNoneZ_clone(const struct LDKCResult_NoneNoneZ *NONNULL_PTR orig);
        public static native long CResult_NoneNoneZ_clone(long orig);
+       // uint64_t C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR arg);
+       public static native long C2Tuple_SignatureCVec_SignatureZZ_clone_ptr(long arg);
        // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_clone(const struct LDKC2Tuple_SignatureCVec_SignatureZZ *NONNULL_PTR orig);
        public static native long C2Tuple_SignatureCVec_SignatureZZ_clone(long orig);
        // struct LDKC2Tuple_SignatureCVec_SignatureZZ C2Tuple_SignatureCVec_SignatureZZ_new(struct LDKSignature a, struct LDKCVec_SignatureZ b);
@@ -1786,24 +1869,36 @@ public class bindings {
        public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_ok(long o);
        // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err(void);
        public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_err();
+       // bool CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_is_ok(long o);
        // void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ _res);
        public static native void CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_free(long _res);
+       // uint64_t CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR arg);
+       public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone_ptr(long arg);
        // struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(const struct LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ *NONNULL_PTR orig);
        public static native long CResult_C2Tuple_SignatureCVec_SignatureZZNoneZ_clone(long orig);
        // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_ok(struct LDKSignature o);
        public static native long CResult_SignatureNoneZ_ok(byte[] o);
        // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_err(void);
        public static native long CResult_SignatureNoneZ_err();
+       // bool CResult_SignatureNoneZ_is_ok(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_SignatureNoneZ_is_ok(long o);
        // void CResult_SignatureNoneZ_free(struct LDKCResult_SignatureNoneZ _res);
        public static native void CResult_SignatureNoneZ_free(long _res);
+       // uint64_t CResult_SignatureNoneZ_clone_ptr(LDKCResult_SignatureNoneZ *NONNULL_PTR arg);
+       public static native long CResult_SignatureNoneZ_clone_ptr(long arg);
        // struct LDKCResult_SignatureNoneZ CResult_SignatureNoneZ_clone(const struct LDKCResult_SignatureNoneZ *NONNULL_PTR orig);
        public static native long CResult_SignatureNoneZ_clone(long orig);
        // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_ok(struct LDKSign o);
        public static native long CResult_SignDecodeErrorZ_ok(long o);
        // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_SignDecodeErrorZ_err(long e);
+       // bool CResult_SignDecodeErrorZ_is_ok(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_SignDecodeErrorZ_is_ok(long o);
        // void CResult_SignDecodeErrorZ_free(struct LDKCResult_SignDecodeErrorZ _res);
        public static native void CResult_SignDecodeErrorZ_free(long _res);
+       // uint64_t CResult_SignDecodeErrorZ_clone_ptr(LDKCResult_SignDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_SignDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_SignDecodeErrorZ CResult_SignDecodeErrorZ_clone(const struct LDKCResult_SignDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_SignDecodeErrorZ_clone(long orig);
        // void CVec_u8Z_free(struct LDKCVec_u8Z _res);
@@ -1812,8 +1907,12 @@ public class bindings {
        public static native long CResult_RecoverableSignatureNoneZ_ok(byte[] arg);
        // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_err(void);
        public static native long CResult_RecoverableSignatureNoneZ_err();
+       // bool CResult_RecoverableSignatureNoneZ_is_ok(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_RecoverableSignatureNoneZ_is_ok(long o);
        // void CResult_RecoverableSignatureNoneZ_free(struct LDKCResult_RecoverableSignatureNoneZ _res);
        public static native void CResult_RecoverableSignatureNoneZ_free(long _res);
+       // uint64_t CResult_RecoverableSignatureNoneZ_clone_ptr(LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR arg);
+       public static native long CResult_RecoverableSignatureNoneZ_clone_ptr(long arg);
        // struct LDKCResult_RecoverableSignatureNoneZ CResult_RecoverableSignatureNoneZ_clone(const struct LDKCResult_RecoverableSignatureNoneZ *NONNULL_PTR orig);
        public static native long CResult_RecoverableSignatureNoneZ_clone(long orig);
        // void CVec_CVec_u8ZZ_free(struct LDKCVec_CVec_u8ZZ _res);
@@ -1822,16 +1921,24 @@ public class bindings {
        public static native long CResult_CVec_CVec_u8ZZNoneZ_ok(byte[][] o);
        // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_err(void);
        public static native long CResult_CVec_CVec_u8ZZNoneZ_err();
+       // bool CResult_CVec_CVec_u8ZZNoneZ_is_ok(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_CVec_CVec_u8ZZNoneZ_is_ok(long o);
        // void CResult_CVec_CVec_u8ZZNoneZ_free(struct LDKCResult_CVec_CVec_u8ZZNoneZ _res);
        public static native void CResult_CVec_CVec_u8ZZNoneZ_free(long _res);
+       // uint64_t CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR arg);
+       public static native long CResult_CVec_CVec_u8ZZNoneZ_clone_ptr(long arg);
        // struct LDKCResult_CVec_CVec_u8ZZNoneZ CResult_CVec_CVec_u8ZZNoneZ_clone(const struct LDKCResult_CVec_CVec_u8ZZNoneZ *NONNULL_PTR orig);
        public static native long CResult_CVec_CVec_u8ZZNoneZ_clone(long orig);
        // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_ok(struct LDKInMemorySigner o);
        public static native long CResult_InMemorySignerDecodeErrorZ_ok(long o);
        // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_InMemorySignerDecodeErrorZ_err(long e);
+       // bool CResult_InMemorySignerDecodeErrorZ_is_ok(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InMemorySignerDecodeErrorZ_is_ok(long o);
        // void CResult_InMemorySignerDecodeErrorZ_free(struct LDKCResult_InMemorySignerDecodeErrorZ _res);
        public static native void CResult_InMemorySignerDecodeErrorZ_free(long _res);
+       // uint64_t CResult_InMemorySignerDecodeErrorZ_clone_ptr(LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_InMemorySignerDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InMemorySignerDecodeErrorZ CResult_InMemorySignerDecodeErrorZ_clone(const struct LDKCResult_InMemorySignerDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_InMemorySignerDecodeErrorZ_clone(long orig);
        // void CVec_TxOutZ_free(struct LDKCVec_TxOutZ _res);
@@ -1840,10 +1947,16 @@ public class bindings {
        public static native long CResult_TransactionNoneZ_ok(byte[] o);
        // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_err(void);
        public static native long CResult_TransactionNoneZ_err();
+       // bool CResult_TransactionNoneZ_is_ok(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_TransactionNoneZ_is_ok(long o);
        // void CResult_TransactionNoneZ_free(struct LDKCResult_TransactionNoneZ _res);
        public static native void CResult_TransactionNoneZ_free(long _res);
+       // uint64_t CResult_TransactionNoneZ_clone_ptr(LDKCResult_TransactionNoneZ *NONNULL_PTR arg);
+       public static native long CResult_TransactionNoneZ_clone_ptr(long arg);
        // struct LDKCResult_TransactionNoneZ CResult_TransactionNoneZ_clone(const struct LDKCResult_TransactionNoneZ *NONNULL_PTR orig);
        public static native long CResult_TransactionNoneZ_clone(long orig);
+       // uint64_t C2Tuple_BlockHashChannelMonitorZ_clone_ptr(LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR arg);
+       public static native long C2Tuple_BlockHashChannelMonitorZ_clone_ptr(long arg);
        // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_clone(const struct LDKC2Tuple_BlockHashChannelMonitorZ *NONNULL_PTR orig);
        public static native long C2Tuple_BlockHashChannelMonitorZ_clone(long orig);
        // struct LDKC2Tuple_BlockHashChannelMonitorZ C2Tuple_BlockHashChannelMonitorZ_new(struct LDKThirtyTwoBytes a, struct LDKChannelMonitor b);
@@ -1856,8 +1969,12 @@ public class bindings {
        public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_ok(long[] o);
        // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(enum LDKIOError e);
        public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_err(IOError e);
+       // bool CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_is_ok(long o);
        // void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ _res);
        public static native void CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_free(long _res);
+       // uint64_t CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(const struct LDKCResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ *NONNULL_PTR orig);
        public static native long CResult_CVec_C2Tuple_BlockHashChannelMonitorZZErrorZ_clone(long orig);
        // struct LDKCOption_u16Z COption_u16Z_some(uint16_t o);
@@ -1866,14 +1983,20 @@ public class bindings {
        public static native long COption_u16Z_none();
        // void COption_u16Z_free(struct LDKCOption_u16Z _res);
        public static native void COption_u16Z_free(long _res);
+       // uint64_t COption_u16Z_clone_ptr(LDKCOption_u16Z *NONNULL_PTR arg);
+       public static native long COption_u16Z_clone_ptr(long arg);
        // struct LDKCOption_u16Z COption_u16Z_clone(const struct LDKCOption_u16Z *NONNULL_PTR orig);
        public static native long COption_u16Z_clone(long orig);
        // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_ok(void);
        public static native long CResult_NoneAPIErrorZ_ok();
        // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_err(struct LDKAPIError e);
        public static native long CResult_NoneAPIErrorZ_err(long e);
+       // bool CResult_NoneAPIErrorZ_is_ok(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneAPIErrorZ_is_ok(long o);
        // void CResult_NoneAPIErrorZ_free(struct LDKCResult_NoneAPIErrorZ _res);
        public static native void CResult_NoneAPIErrorZ_free(long _res);
+       // uint64_t CResult_NoneAPIErrorZ_clone_ptr(LDKCResult_NoneAPIErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NoneAPIErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneAPIErrorZ CResult_NoneAPIErrorZ_clone(const struct LDKCResult_NoneAPIErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneAPIErrorZ_clone(long orig);
        // void CVec_CResult_NoneAPIErrorZZ_free(struct LDKCVec_CResult_NoneAPIErrorZZ _res);
@@ -1884,26 +2007,40 @@ public class bindings {
        public static native long CResult__u832APIErrorZ_ok(byte[] o);
        // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_err(struct LDKAPIError e);
        public static native long CResult__u832APIErrorZ_err(long e);
+       // bool CResult__u832APIErrorZ_is_ok(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR o);
+       public static native boolean CResult__u832APIErrorZ_is_ok(long o);
        // void CResult__u832APIErrorZ_free(struct LDKCResult__u832APIErrorZ _res);
        public static native void CResult__u832APIErrorZ_free(long _res);
+       // uint64_t CResult__u832APIErrorZ_clone_ptr(LDKCResult__u832APIErrorZ *NONNULL_PTR arg);
+       public static native long CResult__u832APIErrorZ_clone_ptr(long arg);
        // struct LDKCResult__u832APIErrorZ CResult__u832APIErrorZ_clone(const struct LDKCResult__u832APIErrorZ *NONNULL_PTR orig);
        public static native long CResult__u832APIErrorZ_clone(long orig);
        // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_ok(struct LDKThirtyTwoBytes o);
        public static native long CResult_PaymentIdPaymentSendFailureZ_ok(byte[] o);
        // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
        public static native long CResult_PaymentIdPaymentSendFailureZ_err(long e);
+       // bool CResult_PaymentIdPaymentSendFailureZ_is_ok(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR o);
+       public static native boolean CResult_PaymentIdPaymentSendFailureZ_is_ok(long o);
        // void CResult_PaymentIdPaymentSendFailureZ_free(struct LDKCResult_PaymentIdPaymentSendFailureZ _res);
        public static native void CResult_PaymentIdPaymentSendFailureZ_free(long _res);
+       // uint64_t CResult_PaymentIdPaymentSendFailureZ_clone_ptr(LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR arg);
+       public static native long CResult_PaymentIdPaymentSendFailureZ_clone_ptr(long arg);
        // struct LDKCResult_PaymentIdPaymentSendFailureZ CResult_PaymentIdPaymentSendFailureZ_clone(const struct LDKCResult_PaymentIdPaymentSendFailureZ *NONNULL_PTR orig);
        public static native long CResult_PaymentIdPaymentSendFailureZ_clone(long orig);
        // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_ok(void);
        public static native long CResult_NonePaymentSendFailureZ_ok();
        // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
        public static native long CResult_NonePaymentSendFailureZ_err(long e);
+       // bool CResult_NonePaymentSendFailureZ_is_ok(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR o);
+       public static native boolean CResult_NonePaymentSendFailureZ_is_ok(long o);
        // void CResult_NonePaymentSendFailureZ_free(struct LDKCResult_NonePaymentSendFailureZ _res);
        public static native void CResult_NonePaymentSendFailureZ_free(long _res);
+       // uint64_t CResult_NonePaymentSendFailureZ_clone_ptr(LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR arg);
+       public static native long CResult_NonePaymentSendFailureZ_clone_ptr(long arg);
        // struct LDKCResult_NonePaymentSendFailureZ CResult_NonePaymentSendFailureZ_clone(const struct LDKCResult_NonePaymentSendFailureZ *NONNULL_PTR orig);
        public static native long CResult_NonePaymentSendFailureZ_clone(long orig);
+       // uint64_t C2Tuple_PaymentHashPaymentIdZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR arg);
+       public static native long C2Tuple_PaymentHashPaymentIdZ_clone_ptr(long arg);
        // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_clone(const struct LDKC2Tuple_PaymentHashPaymentIdZ *NONNULL_PTR orig);
        public static native long C2Tuple_PaymentHashPaymentIdZ_clone(long orig);
        // struct LDKC2Tuple_PaymentHashPaymentIdZ C2Tuple_PaymentHashPaymentIdZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
@@ -1914,12 +2051,18 @@ public class bindings {
        public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_ok(long o);
        // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(struct LDKPaymentSendFailure e);
        public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_err(long e);
+       // bool CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_is_ok(long o);
        // void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ _res);
        public static native void CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_free(long _res);
+       // uint64_t CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR arg);
+       public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone_ptr(long arg);
        // struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(const struct LDKCResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ *NONNULL_PTR orig);
        public static native long CResult_C2Tuple_PaymentHashPaymentIdZPaymentSendFailureZ_clone(long orig);
        // void CVec_NetAddressZ_free(struct LDKCVec_NetAddressZ _res);
        public static native void CVec_NetAddressZ_free(long[] _res);
+       // uint64_t C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR arg);
+       public static native long C2Tuple_PaymentHashPaymentSecretZ_clone_ptr(long arg);
        // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_clone(const struct LDKC2Tuple_PaymentHashPaymentSecretZ *NONNULL_PTR orig);
        public static native long C2Tuple_PaymentHashPaymentSecretZ_clone(long orig);
        // struct LDKC2Tuple_PaymentHashPaymentSecretZ C2Tuple_PaymentHashPaymentSecretZ_new(struct LDKThirtyTwoBytes a, struct LDKThirtyTwoBytes b);
@@ -1930,8 +2073,12 @@ public class bindings {
        public static native long CResult_PaymentSecretAPIErrorZ_ok(byte[] o);
        // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_err(struct LDKAPIError e);
        public static native long CResult_PaymentSecretAPIErrorZ_err(long e);
+       // bool CResult_PaymentSecretAPIErrorZ_is_ok(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PaymentSecretAPIErrorZ_is_ok(long o);
        // void CResult_PaymentSecretAPIErrorZ_free(struct LDKCResult_PaymentSecretAPIErrorZ _res);
        public static native void CResult_PaymentSecretAPIErrorZ_free(long _res);
+       // uint64_t CResult_PaymentSecretAPIErrorZ_clone_ptr(LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PaymentSecretAPIErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PaymentSecretAPIErrorZ CResult_PaymentSecretAPIErrorZ_clone(const struct LDKCResult_PaymentSecretAPIErrorZ *NONNULL_PTR orig);
        public static native long CResult_PaymentSecretAPIErrorZ_clone(long orig);
        // void CVec_ChannelMonitorZ_free(struct LDKCVec_ChannelMonitorZ _res);
@@ -1944,22 +2091,32 @@ public class bindings {
        public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(long o);
        // struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(long e);
+       // bool CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_is_ok(long o);
        // void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ _res);
        public static native void CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_free(long _res);
        // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_ok(struct LDKChannelConfig o);
        public static native long CResult_ChannelConfigDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelConfigDecodeErrorZ_err(long e);
+       // bool CResult_ChannelConfigDecodeErrorZ_is_ok(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelConfigDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelConfigDecodeErrorZ_free(struct LDKCResult_ChannelConfigDecodeErrorZ _res);
        public static native void CResult_ChannelConfigDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelConfigDecodeErrorZ_clone_ptr(LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelConfigDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelConfigDecodeErrorZ CResult_ChannelConfigDecodeErrorZ_clone(const struct LDKCResult_ChannelConfigDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelConfigDecodeErrorZ_clone(long orig);
        // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_ok(struct LDKOutPoint o);
        public static native long CResult_OutPointDecodeErrorZ_ok(long o);
        // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_OutPointDecodeErrorZ_err(long e);
+       // bool CResult_OutPointDecodeErrorZ_is_ok(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_OutPointDecodeErrorZ_is_ok(long o);
        // void CResult_OutPointDecodeErrorZ_free(struct LDKCResult_OutPointDecodeErrorZ _res);
        public static native void CResult_OutPointDecodeErrorZ_free(long _res);
+       // uint64_t CResult_OutPointDecodeErrorZ_clone_ptr(LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_OutPointDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_OutPointDecodeErrorZ CResult_OutPointDecodeErrorZ_clone(const struct LDKCResult_OutPointDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_OutPointDecodeErrorZ_clone(long orig);
        // struct LDKCOption_TypeZ COption_TypeZ_some(struct LDKType o);
@@ -1968,48 +2125,72 @@ public class bindings {
        public static native long COption_TypeZ_none();
        // void COption_TypeZ_free(struct LDKCOption_TypeZ _res);
        public static native void COption_TypeZ_free(long _res);
+       // uint64_t COption_TypeZ_clone_ptr(LDKCOption_TypeZ *NONNULL_PTR arg);
+       public static native long COption_TypeZ_clone_ptr(long arg);
        // struct LDKCOption_TypeZ COption_TypeZ_clone(const struct LDKCOption_TypeZ *NONNULL_PTR orig);
        public static native long COption_TypeZ_clone(long orig);
        // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_ok(struct LDKCOption_TypeZ o);
        public static native long CResult_COption_TypeZDecodeErrorZ_ok(long o);
        // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_COption_TypeZDecodeErrorZ_err(long e);
+       // bool CResult_COption_TypeZDecodeErrorZ_is_ok(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_COption_TypeZDecodeErrorZ_is_ok(long o);
        // void CResult_COption_TypeZDecodeErrorZ_free(struct LDKCResult_COption_TypeZDecodeErrorZ _res);
        public static native void CResult_COption_TypeZDecodeErrorZ_free(long _res);
+       // uint64_t CResult_COption_TypeZDecodeErrorZ_clone_ptr(LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_COption_TypeZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_COption_TypeZDecodeErrorZ CResult_COption_TypeZDecodeErrorZ_clone(const struct LDKCResult_COption_TypeZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_COption_TypeZDecodeErrorZ_clone(long orig);
        // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_ok(struct LDKThirtyTwoBytes o);
        public static native long CResult_PaymentIdPaymentErrorZ_ok(byte[] o);
        // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_err(struct LDKPaymentError e);
        public static native long CResult_PaymentIdPaymentErrorZ_err(long e);
+       // bool CResult_PaymentIdPaymentErrorZ_is_ok(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PaymentIdPaymentErrorZ_is_ok(long o);
        // void CResult_PaymentIdPaymentErrorZ_free(struct LDKCResult_PaymentIdPaymentErrorZ _res);
        public static native void CResult_PaymentIdPaymentErrorZ_free(long _res);
+       // uint64_t CResult_PaymentIdPaymentErrorZ_clone_ptr(LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PaymentIdPaymentErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PaymentIdPaymentErrorZ CResult_PaymentIdPaymentErrorZ_clone(const struct LDKCResult_PaymentIdPaymentErrorZ *NONNULL_PTR orig);
        public static native long CResult_PaymentIdPaymentErrorZ_clone(long orig);
        // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_ok(enum LDKSiPrefix o);
        public static native long CResult_SiPrefixNoneZ_ok(SiPrefix o);
        // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_err(void);
        public static native long CResult_SiPrefixNoneZ_err();
+       // bool CResult_SiPrefixNoneZ_is_ok(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_SiPrefixNoneZ_is_ok(long o);
        // void CResult_SiPrefixNoneZ_free(struct LDKCResult_SiPrefixNoneZ _res);
        public static native void CResult_SiPrefixNoneZ_free(long _res);
+       // uint64_t CResult_SiPrefixNoneZ_clone_ptr(LDKCResult_SiPrefixNoneZ *NONNULL_PTR arg);
+       public static native long CResult_SiPrefixNoneZ_clone_ptr(long arg);
        // struct LDKCResult_SiPrefixNoneZ CResult_SiPrefixNoneZ_clone(const struct LDKCResult_SiPrefixNoneZ *NONNULL_PTR orig);
        public static native long CResult_SiPrefixNoneZ_clone(long orig);
        // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_ok(struct LDKInvoice o);
        public static native long CResult_InvoiceNoneZ_ok(long o);
        // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_err(void);
        public static native long CResult_InvoiceNoneZ_err();
+       // bool CResult_InvoiceNoneZ_is_ok(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_InvoiceNoneZ_is_ok(long o);
        // void CResult_InvoiceNoneZ_free(struct LDKCResult_InvoiceNoneZ _res);
        public static native void CResult_InvoiceNoneZ_free(long _res);
+       // uint64_t CResult_InvoiceNoneZ_clone_ptr(LDKCResult_InvoiceNoneZ *NONNULL_PTR arg);
+       public static native long CResult_InvoiceNoneZ_clone_ptr(long arg);
        // struct LDKCResult_InvoiceNoneZ CResult_InvoiceNoneZ_clone(const struct LDKCResult_InvoiceNoneZ *NONNULL_PTR orig);
        public static native long CResult_InvoiceNoneZ_clone(long orig);
        // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_ok(struct LDKSignedRawInvoice o);
        public static native long CResult_SignedRawInvoiceNoneZ_ok(long o);
        // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_err(void);
        public static native long CResult_SignedRawInvoiceNoneZ_err();
+       // bool CResult_SignedRawInvoiceNoneZ_is_ok(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_SignedRawInvoiceNoneZ_is_ok(long o);
        // void CResult_SignedRawInvoiceNoneZ_free(struct LDKCResult_SignedRawInvoiceNoneZ _res);
        public static native void CResult_SignedRawInvoiceNoneZ_free(long _res);
+       // uint64_t CResult_SignedRawInvoiceNoneZ_clone_ptr(LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR arg);
+       public static native long CResult_SignedRawInvoiceNoneZ_clone_ptr(long arg);
        // struct LDKCResult_SignedRawInvoiceNoneZ CResult_SignedRawInvoiceNoneZ_clone(const struct LDKCResult_SignedRawInvoiceNoneZ *NONNULL_PTR orig);
        public static native long CResult_SignedRawInvoiceNoneZ_clone(long orig);
+       // uint64_t C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR arg);
+       public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone_ptr(long arg);
        // struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(const struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ *NONNULL_PTR orig);
        public static native long C3Tuple_RawInvoice_u832InvoiceSignatureZ_clone(long orig);
        // struct LDKC3Tuple_RawInvoice_u832InvoiceSignatureZ C3Tuple_RawInvoice_u832InvoiceSignatureZ_new(struct LDKRawInvoice a, struct LDKThirtyTwoBytes b, struct LDKInvoiceSignature c);
@@ -2020,8 +2201,12 @@ public class bindings {
        public static native long CResult_PayeePubKeyErrorZ_ok(long o);
        // struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_err(enum LDKSecp256k1Error e);
        public static native long CResult_PayeePubKeyErrorZ_err(Secp256k1Error e);
+       // bool CResult_PayeePubKeyErrorZ_is_ok(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PayeePubKeyErrorZ_is_ok(long o);
        // void CResult_PayeePubKeyErrorZ_free(struct LDKCResult_PayeePubKeyErrorZ _res);
        public static native void CResult_PayeePubKeyErrorZ_free(long _res);
+       // uint64_t CResult_PayeePubKeyErrorZ_clone_ptr(LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PayeePubKeyErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PayeePubKeyErrorZ CResult_PayeePubKeyErrorZ_clone(const struct LDKCResult_PayeePubKeyErrorZ *NONNULL_PTR orig);
        public static native long CResult_PayeePubKeyErrorZ_clone(long orig);
        // void CVec_PrivateRouteZ_free(struct LDKCVec_PrivateRouteZ _res);
@@ -2030,86 +2215,150 @@ public class bindings {
        public static native long CResult_PositiveTimestampCreationErrorZ_ok(long o);
        // struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_err(enum LDKCreationError e);
        public static native long CResult_PositiveTimestampCreationErrorZ_err(CreationError e);
+       // bool CResult_PositiveTimestampCreationErrorZ_is_ok(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PositiveTimestampCreationErrorZ_is_ok(long o);
        // void CResult_PositiveTimestampCreationErrorZ_free(struct LDKCResult_PositiveTimestampCreationErrorZ _res);
        public static native void CResult_PositiveTimestampCreationErrorZ_free(long _res);
+       // uint64_t CResult_PositiveTimestampCreationErrorZ_clone_ptr(LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PositiveTimestampCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PositiveTimestampCreationErrorZ CResult_PositiveTimestampCreationErrorZ_clone(const struct LDKCResult_PositiveTimestampCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_PositiveTimestampCreationErrorZ_clone(long orig);
        // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_ok(void);
        public static native long CResult_NoneSemanticErrorZ_ok();
        // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_err(enum LDKSemanticError e);
        public static native long CResult_NoneSemanticErrorZ_err(SemanticError e);
+       // bool CResult_NoneSemanticErrorZ_is_ok(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneSemanticErrorZ_is_ok(long o);
        // void CResult_NoneSemanticErrorZ_free(struct LDKCResult_NoneSemanticErrorZ _res);
        public static native void CResult_NoneSemanticErrorZ_free(long _res);
+       // uint64_t CResult_NoneSemanticErrorZ_clone_ptr(LDKCResult_NoneSemanticErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NoneSemanticErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneSemanticErrorZ CResult_NoneSemanticErrorZ_clone(const struct LDKCResult_NoneSemanticErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneSemanticErrorZ_clone(long orig);
        // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_ok(struct LDKInvoice o);
        public static native long CResult_InvoiceSemanticErrorZ_ok(long o);
        // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_err(enum LDKSemanticError e);
        public static native long CResult_InvoiceSemanticErrorZ_err(SemanticError e);
+       // bool CResult_InvoiceSemanticErrorZ_is_ok(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InvoiceSemanticErrorZ_is_ok(long o);
        // void CResult_InvoiceSemanticErrorZ_free(struct LDKCResult_InvoiceSemanticErrorZ _res);
        public static native void CResult_InvoiceSemanticErrorZ_free(long _res);
+       // uint64_t CResult_InvoiceSemanticErrorZ_clone_ptr(LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR arg);
+       public static native long CResult_InvoiceSemanticErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InvoiceSemanticErrorZ CResult_InvoiceSemanticErrorZ_clone(const struct LDKCResult_InvoiceSemanticErrorZ *NONNULL_PTR orig);
        public static native long CResult_InvoiceSemanticErrorZ_clone(long orig);
        // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_ok(struct LDKDescription o);
        public static native long CResult_DescriptionCreationErrorZ_ok(long o);
        // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_err(enum LDKCreationError e);
        public static native long CResult_DescriptionCreationErrorZ_err(CreationError e);
+       // bool CResult_DescriptionCreationErrorZ_is_ok(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_DescriptionCreationErrorZ_is_ok(long o);
        // void CResult_DescriptionCreationErrorZ_free(struct LDKCResult_DescriptionCreationErrorZ _res);
        public static native void CResult_DescriptionCreationErrorZ_free(long _res);
+       // uint64_t CResult_DescriptionCreationErrorZ_clone_ptr(LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR arg);
+       public static native long CResult_DescriptionCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_DescriptionCreationErrorZ CResult_DescriptionCreationErrorZ_clone(const struct LDKCResult_DescriptionCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_DescriptionCreationErrorZ_clone(long orig);
        // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_ok(struct LDKExpiryTime o);
        public static native long CResult_ExpiryTimeCreationErrorZ_ok(long o);
        // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_err(enum LDKCreationError e);
        public static native long CResult_ExpiryTimeCreationErrorZ_err(CreationError e);
+       // bool CResult_ExpiryTimeCreationErrorZ_is_ok(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ExpiryTimeCreationErrorZ_is_ok(long o);
        // void CResult_ExpiryTimeCreationErrorZ_free(struct LDKCResult_ExpiryTimeCreationErrorZ _res);
        public static native void CResult_ExpiryTimeCreationErrorZ_free(long _res);
+       // uint64_t CResult_ExpiryTimeCreationErrorZ_clone_ptr(LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ExpiryTimeCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ExpiryTimeCreationErrorZ CResult_ExpiryTimeCreationErrorZ_clone(const struct LDKCResult_ExpiryTimeCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_ExpiryTimeCreationErrorZ_clone(long orig);
        // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_ok(struct LDKPrivateRoute o);
        public static native long CResult_PrivateRouteCreationErrorZ_ok(long o);
        // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_err(enum LDKCreationError e);
        public static native long CResult_PrivateRouteCreationErrorZ_err(CreationError e);
+       // bool CResult_PrivateRouteCreationErrorZ_is_ok(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PrivateRouteCreationErrorZ_is_ok(long o);
        // void CResult_PrivateRouteCreationErrorZ_free(struct LDKCResult_PrivateRouteCreationErrorZ _res);
        public static native void CResult_PrivateRouteCreationErrorZ_free(long _res);
+       // uint64_t CResult_PrivateRouteCreationErrorZ_clone_ptr(LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PrivateRouteCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PrivateRouteCreationErrorZ CResult_PrivateRouteCreationErrorZ_clone(const struct LDKCResult_PrivateRouteCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_PrivateRouteCreationErrorZ_clone(long orig);
        // struct LDKCResult_StringErrorZ CResult_StringErrorZ_ok(struct LDKStr o);
        public static native long CResult_StringErrorZ_ok(String o);
        // struct LDKCResult_StringErrorZ CResult_StringErrorZ_err(enum LDKSecp256k1Error e);
        public static native long CResult_StringErrorZ_err(Secp256k1Error e);
+       // bool CResult_StringErrorZ_is_ok(const struct LDKCResult_StringErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_StringErrorZ_is_ok(long o);
        // void CResult_StringErrorZ_free(struct LDKCResult_StringErrorZ _res);
        public static native void CResult_StringErrorZ_free(long _res);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_ok(struct LDKChannelMonitorUpdate o);
        public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_err(long e);
+       // bool CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelMonitorUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelMonitorUpdateDecodeErrorZ_free(struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ _res);
        public static native void CResult_ChannelMonitorUpdateDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ CResult_ChannelMonitorUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelMonitorUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelMonitorUpdateDecodeErrorZ_clone(long orig);
+       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_some(struct LDKMonitorEvent o);
+       public static native long COption_MonitorEventZ_some(long o);
+       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_none(void);
+       public static native long COption_MonitorEventZ_none();
+       // void COption_MonitorEventZ_free(struct LDKCOption_MonitorEventZ _res);
+       public static native void COption_MonitorEventZ_free(long _res);
+       // uint64_t COption_MonitorEventZ_clone_ptr(LDKCOption_MonitorEventZ *NONNULL_PTR arg);
+       public static native long COption_MonitorEventZ_clone_ptr(long arg);
+       // struct LDKCOption_MonitorEventZ COption_MonitorEventZ_clone(const struct LDKCOption_MonitorEventZ *NONNULL_PTR orig);
+       public static native long COption_MonitorEventZ_clone(long orig);
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_ok(struct LDKCOption_MonitorEventZ o);
+       public static native long CResult_COption_MonitorEventZDecodeErrorZ_ok(long o);
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_COption_MonitorEventZDecodeErrorZ_err(long e);
+       // bool CResult_COption_MonitorEventZDecodeErrorZ_is_ok(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_COption_MonitorEventZDecodeErrorZ_is_ok(long o);
+       // void CResult_COption_MonitorEventZDecodeErrorZ_free(struct LDKCResult_COption_MonitorEventZDecodeErrorZ _res);
+       public static native void CResult_COption_MonitorEventZDecodeErrorZ_free(long _res);
+       // uint64_t CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_COption_MonitorEventZDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ CResult_COption_MonitorEventZDecodeErrorZ_clone(const struct LDKCResult_COption_MonitorEventZDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_COption_MonitorEventZDecodeErrorZ_clone(long orig);
        // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_ok(struct LDKHTLCUpdate o);
        public static native long CResult_HTLCUpdateDecodeErrorZ_ok(long o);
        // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_HTLCUpdateDecodeErrorZ_err(long e);
+       // bool CResult_HTLCUpdateDecodeErrorZ_is_ok(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_HTLCUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_HTLCUpdateDecodeErrorZ_free(struct LDKCResult_HTLCUpdateDecodeErrorZ _res);
        public static native void CResult_HTLCUpdateDecodeErrorZ_free(long _res);
+       // uint64_t CResult_HTLCUpdateDecodeErrorZ_clone_ptr(LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_HTLCUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_HTLCUpdateDecodeErrorZ CResult_HTLCUpdateDecodeErrorZ_clone(const struct LDKCResult_HTLCUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_HTLCUpdateDecodeErrorZ_clone(long orig);
        // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_ok(void);
        public static native long CResult_NoneMonitorUpdateErrorZ_ok();
        // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_err(struct LDKMonitorUpdateError e);
        public static native long CResult_NoneMonitorUpdateErrorZ_err(long e);
+       // bool CResult_NoneMonitorUpdateErrorZ_is_ok(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneMonitorUpdateErrorZ_is_ok(long o);
        // void CResult_NoneMonitorUpdateErrorZ_free(struct LDKCResult_NoneMonitorUpdateErrorZ _res);
        public static native void CResult_NoneMonitorUpdateErrorZ_free(long _res);
+       // uint64_t CResult_NoneMonitorUpdateErrorZ_clone_ptr(LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NoneMonitorUpdateErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneMonitorUpdateErrorZ CResult_NoneMonitorUpdateErrorZ_clone(const struct LDKCResult_NoneMonitorUpdateErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneMonitorUpdateErrorZ_clone(long orig);
+       // uint64_t C2Tuple_OutPointScriptZ_clone_ptr(LDKC2Tuple_OutPointScriptZ *NONNULL_PTR arg);
+       public static native long C2Tuple_OutPointScriptZ_clone_ptr(long arg);
        // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_clone(const struct LDKC2Tuple_OutPointScriptZ *NONNULL_PTR orig);
        public static native long C2Tuple_OutPointScriptZ_clone(long orig);
        // struct LDKC2Tuple_OutPointScriptZ C2Tuple_OutPointScriptZ_new(struct LDKOutPoint a, struct LDKCVec_u8Z b);
        public static native long C2Tuple_OutPointScriptZ_new(long a, byte[] b);
        // void C2Tuple_OutPointScriptZ_free(struct LDKC2Tuple_OutPointScriptZ _res);
        public static native void C2Tuple_OutPointScriptZ_free(long _res);
+       // uint64_t C2Tuple_u32ScriptZ_clone_ptr(LDKC2Tuple_u32ScriptZ *NONNULL_PTR arg);
+       public static native long C2Tuple_u32ScriptZ_clone_ptr(long arg);
        // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_clone(const struct LDKC2Tuple_u32ScriptZ *NONNULL_PTR orig);
        public static native long C2Tuple_u32ScriptZ_clone(long orig);
        // struct LDKC2Tuple_u32ScriptZ C2Tuple_u32ScriptZ_new(uint32_t a, struct LDKCVec_u8Z b);
@@ -2118,6 +2367,8 @@ public class bindings {
        public static native void C2Tuple_u32ScriptZ_free(long _res);
        // void CVec_C2Tuple_u32ScriptZZ_free(struct LDKCVec_C2Tuple_u32ScriptZZ _res);
        public static native void CVec_C2Tuple_u32ScriptZZ_free(long[] _res);
+       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR arg);
+       public static native long C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone_ptr(long arg);
        // struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ *NONNULL_PTR orig);
        public static native long C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_clone(long orig);
        // struct LDKC2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ C2Tuple_TxidCVec_C2Tuple_u32ScriptZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32ScriptZZ b);
@@ -2130,6 +2381,8 @@ public class bindings {
        public static native void CVec_EventZ_free(long[] _res);
        // void CVec_TransactionZ_free(struct LDKCVec_TransactionZ _res);
        public static native void CVec_TransactionZ_free(byte[][] _res);
+       // uint64_t C2Tuple_u32TxOutZ_clone_ptr(LDKC2Tuple_u32TxOutZ *NONNULL_PTR arg);
+       public static native long C2Tuple_u32TxOutZ_clone_ptr(long arg);
        // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_clone(const struct LDKC2Tuple_u32TxOutZ *NONNULL_PTR orig);
        public static native long C2Tuple_u32TxOutZ_clone(long orig);
        // struct LDKC2Tuple_u32TxOutZ C2Tuple_u32TxOutZ_new(uint32_t a, struct LDKTxOut b);
@@ -2138,6 +2391,8 @@ public class bindings {
        public static native void C2Tuple_u32TxOutZ_free(long _res);
        // void CVec_C2Tuple_u32TxOutZZ_free(struct LDKCVec_C2Tuple_u32TxOutZZ _res);
        public static native void CVec_C2Tuple_u32TxOutZZ_free(long[] _res);
+       // uint64_t C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR arg);
+       public static native long C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone_ptr(long arg);
        // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(const struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ *NONNULL_PTR orig);
        public static native long C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_clone(long orig);
        // struct LDKC2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ_new(struct LDKThirtyTwoBytes a, struct LDKCVec_C2Tuple_u32TxOutZZ b);
@@ -2152,18 +2407,28 @@ public class bindings {
        public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_ok(long o);
        // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_err(long e);
+       // bool CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_is_ok(long o);
        // void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ _res);
        public static native void CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_free(long _res);
+       // uint64_t CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(const struct LDKCResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_C2Tuple_BlockHashChannelMonitorZDecodeErrorZ_clone(long orig);
        // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_ok(void);
        public static native long CResult_NoneLightningErrorZ_ok();
        // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_err(struct LDKLightningError e);
        public static native long CResult_NoneLightningErrorZ_err(long e);
+       // bool CResult_NoneLightningErrorZ_is_ok(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NoneLightningErrorZ_is_ok(long o);
        // void CResult_NoneLightningErrorZ_free(struct LDKCResult_NoneLightningErrorZ _res);
        public static native void CResult_NoneLightningErrorZ_free(long _res);
+       // uint64_t CResult_NoneLightningErrorZ_clone_ptr(LDKCResult_NoneLightningErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NoneLightningErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NoneLightningErrorZ CResult_NoneLightningErrorZ_clone(const struct LDKCResult_NoneLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_NoneLightningErrorZ_clone(long orig);
+       // uint64_t C2Tuple_PublicKeyTypeZ_clone_ptr(LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR arg);
+       public static native long C2Tuple_PublicKeyTypeZ_clone_ptr(long arg);
        // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_clone(const struct LDKC2Tuple_PublicKeyTypeZ *NONNULL_PTR orig);
        public static native long C2Tuple_PublicKeyTypeZ_clone(long orig);
        // struct LDKC2Tuple_PublicKeyTypeZ C2Tuple_PublicKeyTypeZ_new(struct LDKPublicKey a, struct LDKType b);
@@ -2176,10 +2441,16 @@ public class bindings {
        public static native long CResult_boolLightningErrorZ_ok(boolean o);
        // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_err(struct LDKLightningError e);
        public static native long CResult_boolLightningErrorZ_err(long e);
+       // bool CResult_boolLightningErrorZ_is_ok(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_boolLightningErrorZ_is_ok(long o);
        // void CResult_boolLightningErrorZ_free(struct LDKCResult_boolLightningErrorZ _res);
        public static native void CResult_boolLightningErrorZ_free(long _res);
+       // uint64_t CResult_boolLightningErrorZ_clone_ptr(LDKCResult_boolLightningErrorZ *NONNULL_PTR arg);
+       public static native long CResult_boolLightningErrorZ_clone_ptr(long arg);
        // struct LDKCResult_boolLightningErrorZ CResult_boolLightningErrorZ_clone(const struct LDKCResult_boolLightningErrorZ *NONNULL_PTR orig);
        public static native long CResult_boolLightningErrorZ_clone(long orig);
+       // uint64_t C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR arg);
+       public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone_ptr(long arg);
        // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(const struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ *NONNULL_PTR orig);
        public static native long C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_clone(long orig);
        // struct LDKC3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ C3Tuple_ChannelAnnouncementChannelUpdateChannelUpdateZ_new(struct LDKChannelAnnouncement a, struct LDKChannelUpdate b, struct LDKChannelUpdate c);
@@ -2196,34 +2467,62 @@ public class bindings {
        public static native long CResult_CVec_u8ZPeerHandleErrorZ_ok(byte[] o);
        // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_err(struct LDKPeerHandleError e);
        public static native long CResult_CVec_u8ZPeerHandleErrorZ_err(long e);
+       // bool CResult_CVec_u8ZPeerHandleErrorZ_is_ok(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CVec_u8ZPeerHandleErrorZ_is_ok(long o);
        // void CResult_CVec_u8ZPeerHandleErrorZ_free(struct LDKCResult_CVec_u8ZPeerHandleErrorZ _res);
        public static native void CResult_CVec_u8ZPeerHandleErrorZ_free(long _res);
+       // uint64_t CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CVec_u8ZPeerHandleErrorZ CResult_CVec_u8ZPeerHandleErrorZ_clone(const struct LDKCResult_CVec_u8ZPeerHandleErrorZ *NONNULL_PTR orig);
        public static native long CResult_CVec_u8ZPeerHandleErrorZ_clone(long orig);
        // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_ok(void);
        public static native long CResult_NonePeerHandleErrorZ_ok();
        // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_err(struct LDKPeerHandleError e);
        public static native long CResult_NonePeerHandleErrorZ_err(long e);
+       // bool CResult_NonePeerHandleErrorZ_is_ok(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NonePeerHandleErrorZ_is_ok(long o);
        // void CResult_NonePeerHandleErrorZ_free(struct LDKCResult_NonePeerHandleErrorZ _res);
        public static native void CResult_NonePeerHandleErrorZ_free(long _res);
+       // uint64_t CResult_NonePeerHandleErrorZ_clone_ptr(LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NonePeerHandleErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NonePeerHandleErrorZ CResult_NonePeerHandleErrorZ_clone(const struct LDKCResult_NonePeerHandleErrorZ *NONNULL_PTR orig);
        public static native long CResult_NonePeerHandleErrorZ_clone(long orig);
        // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_ok(bool o);
        public static native long CResult_boolPeerHandleErrorZ_ok(boolean o);
        // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_err(struct LDKPeerHandleError e);
        public static native long CResult_boolPeerHandleErrorZ_err(long e);
+       // bool CResult_boolPeerHandleErrorZ_is_ok(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_boolPeerHandleErrorZ_is_ok(long o);
        // void CResult_boolPeerHandleErrorZ_free(struct LDKCResult_boolPeerHandleErrorZ _res);
        public static native void CResult_boolPeerHandleErrorZ_free(long _res);
+       // uint64_t CResult_boolPeerHandleErrorZ_clone_ptr(LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR arg);
+       public static native long CResult_boolPeerHandleErrorZ_clone_ptr(long arg);
        // struct LDKCResult_boolPeerHandleErrorZ CResult_boolPeerHandleErrorZ_clone(const struct LDKCResult_boolPeerHandleErrorZ *NONNULL_PTR orig);
        public static native long CResult_boolPeerHandleErrorZ_clone(long orig);
        // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_ok(struct LDKNodeId o);
        public static native long CResult_NodeIdDecodeErrorZ_ok(long o);
        // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NodeIdDecodeErrorZ_err(long e);
+       // bool CResult_NodeIdDecodeErrorZ_is_ok(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NodeIdDecodeErrorZ_is_ok(long o);
        // void CResult_NodeIdDecodeErrorZ_free(struct LDKCResult_NodeIdDecodeErrorZ _res);
        public static native void CResult_NodeIdDecodeErrorZ_free(long _res);
+       // uint64_t CResult_NodeIdDecodeErrorZ_clone_ptr(LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NodeIdDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeIdDecodeErrorZ CResult_NodeIdDecodeErrorZ_clone(const struct LDKCResult_NodeIdDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeIdDecodeErrorZ_clone(long orig);
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_ok(struct LDKCOption_NetworkUpdateZ o);
+       public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_ok(long o);
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_err(struct LDKDecodeError e);
+       public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_err(long e);
+       // bool CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_COption_NetworkUpdateZDecodeErrorZ_is_ok(long o);
+       // void CResult_COption_NetworkUpdateZDecodeErrorZ_free(struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ _res);
+       public static native void CResult_COption_NetworkUpdateZDecodeErrorZ_free(long _res);
+       // uint64_t CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_clone_ptr(long arg);
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ CResult_COption_NetworkUpdateZDecodeErrorZ_clone(const struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ *NONNULL_PTR orig);
+       public static native long CResult_COption_NetworkUpdateZDecodeErrorZ_clone(long orig);
        // struct LDKCOption_AccessZ COption_AccessZ_some(struct LDKAccess o);
        public static native long COption_AccessZ_some(long o);
        // struct LDKCOption_AccessZ COption_AccessZ_none(void);
@@ -2234,32 +2533,48 @@ public class bindings {
        public static native long CResult_DirectionalChannelInfoDecodeErrorZ_ok(long o);
        // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_DirectionalChannelInfoDecodeErrorZ_err(long e);
+       // bool CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_DirectionalChannelInfoDecodeErrorZ_is_ok(long o);
        // void CResult_DirectionalChannelInfoDecodeErrorZ_free(struct LDKCResult_DirectionalChannelInfoDecodeErrorZ _res);
        public static native void CResult_DirectionalChannelInfoDecodeErrorZ_free(long _res);
+       // uint64_t CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_DirectionalChannelInfoDecodeErrorZ CResult_DirectionalChannelInfoDecodeErrorZ_clone(const struct LDKCResult_DirectionalChannelInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_DirectionalChannelInfoDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_ok(struct LDKChannelInfo o);
        public static native long CResult_ChannelInfoDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelInfoDecodeErrorZ_err(long e);
+       // bool CResult_ChannelInfoDecodeErrorZ_is_ok(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelInfoDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelInfoDecodeErrorZ_free(struct LDKCResult_ChannelInfoDecodeErrorZ _res);
        public static native void CResult_ChannelInfoDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelInfoDecodeErrorZ_clone_ptr(LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelInfoDecodeErrorZ CResult_ChannelInfoDecodeErrorZ_clone(const struct LDKCResult_ChannelInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelInfoDecodeErrorZ_clone(long orig);
        // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_ok(struct LDKRoutingFees o);
        public static native long CResult_RoutingFeesDecodeErrorZ_ok(long o);
        // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RoutingFeesDecodeErrorZ_err(long e);
+       // bool CResult_RoutingFeesDecodeErrorZ_is_ok(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RoutingFeesDecodeErrorZ_is_ok(long o);
        // void CResult_RoutingFeesDecodeErrorZ_free(struct LDKCResult_RoutingFeesDecodeErrorZ _res);
        public static native void CResult_RoutingFeesDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RoutingFeesDecodeErrorZ_clone_ptr(LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RoutingFeesDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RoutingFeesDecodeErrorZ CResult_RoutingFeesDecodeErrorZ_clone(const struct LDKCResult_RoutingFeesDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RoutingFeesDecodeErrorZ_clone(long orig);
        // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_ok(struct LDKNodeAnnouncementInfo o);
        public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_ok(long o);
        // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_err(long e);
+       // bool CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NodeAnnouncementInfoDecodeErrorZ_is_ok(long o);
        // void CResult_NodeAnnouncementInfoDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ _res);
        public static native void CResult_NodeAnnouncementInfoDecodeErrorZ_free(long _res);
+       // uint64_t CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ CResult_NodeAnnouncementInfoDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeAnnouncementInfoDecodeErrorZ_clone(long orig);
        // void CVec_u64Z_free(struct LDKCVec_u64Z _res);
@@ -2268,16 +2583,24 @@ public class bindings {
        public static native long CResult_NodeInfoDecodeErrorZ_ok(long o);
        // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NodeInfoDecodeErrorZ_err(long e);
+       // bool CResult_NodeInfoDecodeErrorZ_is_ok(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NodeInfoDecodeErrorZ_is_ok(long o);
        // void CResult_NodeInfoDecodeErrorZ_free(struct LDKCResult_NodeInfoDecodeErrorZ _res);
        public static native void CResult_NodeInfoDecodeErrorZ_free(long _res);
+       // uint64_t CResult_NodeInfoDecodeErrorZ_clone_ptr(LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NodeInfoDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeInfoDecodeErrorZ CResult_NodeInfoDecodeErrorZ_clone(const struct LDKCResult_NodeInfoDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeInfoDecodeErrorZ_clone(long orig);
        // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_ok(struct LDKNetworkGraph o);
        public static native long CResult_NetworkGraphDecodeErrorZ_ok(long o);
        // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NetworkGraphDecodeErrorZ_err(long e);
+       // bool CResult_NetworkGraphDecodeErrorZ_is_ok(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NetworkGraphDecodeErrorZ_is_ok(long o);
        // void CResult_NetworkGraphDecodeErrorZ_free(struct LDKCResult_NetworkGraphDecodeErrorZ _res);
        public static native void CResult_NetworkGraphDecodeErrorZ_free(long _res);
+       // uint64_t CResult_NetworkGraphDecodeErrorZ_clone_ptr(LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NetworkGraphDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NetworkGraphDecodeErrorZ CResult_NetworkGraphDecodeErrorZ_clone(const struct LDKCResult_NetworkGraphDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NetworkGraphDecodeErrorZ_clone(long orig);
        // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_some(struct LDKCVec_NetAddressZ o);
@@ -2286,14 +2609,20 @@ public class bindings {
        public static native long COption_CVec_NetAddressZZ_none();
        // void COption_CVec_NetAddressZZ_free(struct LDKCOption_CVec_NetAddressZZ _res);
        public static native void COption_CVec_NetAddressZZ_free(long _res);
+       // uint64_t COption_CVec_NetAddressZZ_clone_ptr(LDKCOption_CVec_NetAddressZZ *NONNULL_PTR arg);
+       public static native long COption_CVec_NetAddressZZ_clone_ptr(long arg);
        // struct LDKCOption_CVec_NetAddressZZ COption_CVec_NetAddressZZ_clone(const struct LDKCOption_CVec_NetAddressZZ *NONNULL_PTR orig);
        public static native long COption_CVec_NetAddressZZ_clone(long orig);
        // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_ok(struct LDKNetAddress o);
        public static native long CResult_NetAddressDecodeErrorZ_ok(long o);
        // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NetAddressDecodeErrorZ_err(long e);
+       // bool CResult_NetAddressDecodeErrorZ_is_ok(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NetAddressDecodeErrorZ_is_ok(long o);
        // void CResult_NetAddressDecodeErrorZ_free(struct LDKCResult_NetAddressDecodeErrorZ _res);
        public static native void CResult_NetAddressDecodeErrorZ_free(long _res);
+       // uint64_t CResult_NetAddressDecodeErrorZ_clone_ptr(LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NetAddressDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NetAddressDecodeErrorZ CResult_NetAddressDecodeErrorZ_clone(const struct LDKCResult_NetAddressDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NetAddressDecodeErrorZ_clone(long orig);
        // void CVec_UpdateAddHTLCZ_free(struct LDKCVec_UpdateAddHTLCZ _res);
@@ -2308,264 +2637,396 @@ public class bindings {
        public static native long CResult_AcceptChannelDecodeErrorZ_ok(long o);
        // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_AcceptChannelDecodeErrorZ_err(long e);
+       // bool CResult_AcceptChannelDecodeErrorZ_is_ok(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_AcceptChannelDecodeErrorZ_is_ok(long o);
        // void CResult_AcceptChannelDecodeErrorZ_free(struct LDKCResult_AcceptChannelDecodeErrorZ _res);
        public static native void CResult_AcceptChannelDecodeErrorZ_free(long _res);
+       // uint64_t CResult_AcceptChannelDecodeErrorZ_clone_ptr(LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_AcceptChannelDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_AcceptChannelDecodeErrorZ CResult_AcceptChannelDecodeErrorZ_clone(const struct LDKCResult_AcceptChannelDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_AcceptChannelDecodeErrorZ_clone(long orig);
        // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_ok(struct LDKAnnouncementSignatures o);
        public static native long CResult_AnnouncementSignaturesDecodeErrorZ_ok(long o);
        // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_AnnouncementSignaturesDecodeErrorZ_err(long e);
+       // bool CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_AnnouncementSignaturesDecodeErrorZ_is_ok(long o);
        // void CResult_AnnouncementSignaturesDecodeErrorZ_free(struct LDKCResult_AnnouncementSignaturesDecodeErrorZ _res);
        public static native void CResult_AnnouncementSignaturesDecodeErrorZ_free(long _res);
+       // uint64_t CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_AnnouncementSignaturesDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_AnnouncementSignaturesDecodeErrorZ CResult_AnnouncementSignaturesDecodeErrorZ_clone(const struct LDKCResult_AnnouncementSignaturesDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_AnnouncementSignaturesDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_ok(struct LDKChannelReestablish o);
        public static native long CResult_ChannelReestablishDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelReestablishDecodeErrorZ_err(long e);
+       // bool CResult_ChannelReestablishDecodeErrorZ_is_ok(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelReestablishDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelReestablishDecodeErrorZ_free(struct LDKCResult_ChannelReestablishDecodeErrorZ _res);
        public static native void CResult_ChannelReestablishDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelReestablishDecodeErrorZ_clone_ptr(LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelReestablishDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelReestablishDecodeErrorZ CResult_ChannelReestablishDecodeErrorZ_clone(const struct LDKCResult_ChannelReestablishDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelReestablishDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_ok(struct LDKClosingSigned o);
        public static native long CResult_ClosingSignedDecodeErrorZ_ok(long o);
        // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ClosingSignedDecodeErrorZ_err(long e);
+       // bool CResult_ClosingSignedDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ClosingSignedDecodeErrorZ_is_ok(long o);
        // void CResult_ClosingSignedDecodeErrorZ_free(struct LDKCResult_ClosingSignedDecodeErrorZ _res);
        public static native void CResult_ClosingSignedDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ClosingSignedDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ClosingSignedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ClosingSignedDecodeErrorZ CResult_ClosingSignedDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ClosingSignedDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(struct LDKClosingSignedFeeRange o);
        public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_ok(long o);
        // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_err(long e);
+       // bool CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ClosingSignedFeeRangeDecodeErrorZ_is_ok(long o);
        // void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ _res);
        public static native void CResult_ClosingSignedFeeRangeDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(const struct LDKCResult_ClosingSignedFeeRangeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ClosingSignedFeeRangeDecodeErrorZ_clone(long orig);
        // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_ok(struct LDKCommitmentSigned o);
        public static native long CResult_CommitmentSignedDecodeErrorZ_ok(long o);
        // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_CommitmentSignedDecodeErrorZ_err(long e);
+       // bool CResult_CommitmentSignedDecodeErrorZ_is_ok(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_CommitmentSignedDecodeErrorZ_is_ok(long o);
        // void CResult_CommitmentSignedDecodeErrorZ_free(struct LDKCResult_CommitmentSignedDecodeErrorZ _res);
        public static native void CResult_CommitmentSignedDecodeErrorZ_free(long _res);
+       // uint64_t CResult_CommitmentSignedDecodeErrorZ_clone_ptr(LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_CommitmentSignedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_CommitmentSignedDecodeErrorZ CResult_CommitmentSignedDecodeErrorZ_clone(const struct LDKCResult_CommitmentSignedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_CommitmentSignedDecodeErrorZ_clone(long orig);
        // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_ok(struct LDKFundingCreated o);
        public static native long CResult_FundingCreatedDecodeErrorZ_ok(long o);
        // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_FundingCreatedDecodeErrorZ_err(long e);
+       // bool CResult_FundingCreatedDecodeErrorZ_is_ok(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_FundingCreatedDecodeErrorZ_is_ok(long o);
        // void CResult_FundingCreatedDecodeErrorZ_free(struct LDKCResult_FundingCreatedDecodeErrorZ _res);
        public static native void CResult_FundingCreatedDecodeErrorZ_free(long _res);
+       // uint64_t CResult_FundingCreatedDecodeErrorZ_clone_ptr(LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_FundingCreatedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_FundingCreatedDecodeErrorZ CResult_FundingCreatedDecodeErrorZ_clone(const struct LDKCResult_FundingCreatedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_FundingCreatedDecodeErrorZ_clone(long orig);
        // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_ok(struct LDKFundingSigned o);
        public static native long CResult_FundingSignedDecodeErrorZ_ok(long o);
        // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_FundingSignedDecodeErrorZ_err(long e);
+       // bool CResult_FundingSignedDecodeErrorZ_is_ok(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_FundingSignedDecodeErrorZ_is_ok(long o);
        // void CResult_FundingSignedDecodeErrorZ_free(struct LDKCResult_FundingSignedDecodeErrorZ _res);
        public static native void CResult_FundingSignedDecodeErrorZ_free(long _res);
+       // uint64_t CResult_FundingSignedDecodeErrorZ_clone_ptr(LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_FundingSignedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_FundingSignedDecodeErrorZ CResult_FundingSignedDecodeErrorZ_clone(const struct LDKCResult_FundingSignedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_FundingSignedDecodeErrorZ_clone(long orig);
        // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_ok(struct LDKFundingLocked o);
        public static native long CResult_FundingLockedDecodeErrorZ_ok(long o);
        // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_FundingLockedDecodeErrorZ_err(long e);
+       // bool CResult_FundingLockedDecodeErrorZ_is_ok(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_FundingLockedDecodeErrorZ_is_ok(long o);
        // void CResult_FundingLockedDecodeErrorZ_free(struct LDKCResult_FundingLockedDecodeErrorZ _res);
        public static native void CResult_FundingLockedDecodeErrorZ_free(long _res);
+       // uint64_t CResult_FundingLockedDecodeErrorZ_clone_ptr(LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_FundingLockedDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_FundingLockedDecodeErrorZ CResult_FundingLockedDecodeErrorZ_clone(const struct LDKCResult_FundingLockedDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_FundingLockedDecodeErrorZ_clone(long orig);
        // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_ok(struct LDKInit o);
        public static native long CResult_InitDecodeErrorZ_ok(long o);
        // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_InitDecodeErrorZ_err(long e);
+       // bool CResult_InitDecodeErrorZ_is_ok(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InitDecodeErrorZ_is_ok(long o);
        // void CResult_InitDecodeErrorZ_free(struct LDKCResult_InitDecodeErrorZ _res);
        public static native void CResult_InitDecodeErrorZ_free(long _res);
+       // uint64_t CResult_InitDecodeErrorZ_clone_ptr(LDKCResult_InitDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_InitDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InitDecodeErrorZ CResult_InitDecodeErrorZ_clone(const struct LDKCResult_InitDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_InitDecodeErrorZ_clone(long orig);
        // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_ok(struct LDKOpenChannel o);
        public static native long CResult_OpenChannelDecodeErrorZ_ok(long o);
        // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_OpenChannelDecodeErrorZ_err(long e);
+       // bool CResult_OpenChannelDecodeErrorZ_is_ok(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_OpenChannelDecodeErrorZ_is_ok(long o);
        // void CResult_OpenChannelDecodeErrorZ_free(struct LDKCResult_OpenChannelDecodeErrorZ _res);
        public static native void CResult_OpenChannelDecodeErrorZ_free(long _res);
+       // uint64_t CResult_OpenChannelDecodeErrorZ_clone_ptr(LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_OpenChannelDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_OpenChannelDecodeErrorZ CResult_OpenChannelDecodeErrorZ_clone(const struct LDKCResult_OpenChannelDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_OpenChannelDecodeErrorZ_clone(long orig);
        // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_ok(struct LDKRevokeAndACK o);
        public static native long CResult_RevokeAndACKDecodeErrorZ_ok(long o);
        // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_RevokeAndACKDecodeErrorZ_err(long e);
+       // bool CResult_RevokeAndACKDecodeErrorZ_is_ok(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_RevokeAndACKDecodeErrorZ_is_ok(long o);
        // void CResult_RevokeAndACKDecodeErrorZ_free(struct LDKCResult_RevokeAndACKDecodeErrorZ _res);
        public static native void CResult_RevokeAndACKDecodeErrorZ_free(long _res);
+       // uint64_t CResult_RevokeAndACKDecodeErrorZ_clone_ptr(LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_RevokeAndACKDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_RevokeAndACKDecodeErrorZ CResult_RevokeAndACKDecodeErrorZ_clone(const struct LDKCResult_RevokeAndACKDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_RevokeAndACKDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_ok(struct LDKShutdown o);
        public static native long CResult_ShutdownDecodeErrorZ_ok(long o);
        // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ShutdownDecodeErrorZ_err(long e);
+       // bool CResult_ShutdownDecodeErrorZ_is_ok(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ShutdownDecodeErrorZ_is_ok(long o);
        // void CResult_ShutdownDecodeErrorZ_free(struct LDKCResult_ShutdownDecodeErrorZ _res);
        public static native void CResult_ShutdownDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ShutdownDecodeErrorZ_clone_ptr(LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ShutdownDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ShutdownDecodeErrorZ CResult_ShutdownDecodeErrorZ_clone(const struct LDKCResult_ShutdownDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ShutdownDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_ok(struct LDKUpdateFailHTLC o);
        public static native long CResult_UpdateFailHTLCDecodeErrorZ_ok(long o);
        // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UpdateFailHTLCDecodeErrorZ_err(long e);
+       // bool CResult_UpdateFailHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UpdateFailHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFailHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateFailHTLCDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UpdateFailHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFailHTLCDecodeErrorZ CResult_UpdateFailHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFailHTLCDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(struct LDKUpdateFailMalformedHTLC o);
        public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_ok(long o);
        // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_err(long e);
+       // bool CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UpdateFailMalformedHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateFailMalformedHTLCDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFailMalformedHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFailMalformedHTLCDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_ok(struct LDKUpdateFee o);
        public static native long CResult_UpdateFeeDecodeErrorZ_ok(long o);
        // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UpdateFeeDecodeErrorZ_err(long e);
+       // bool CResult_UpdateFeeDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UpdateFeeDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFeeDecodeErrorZ_free(struct LDKCResult_UpdateFeeDecodeErrorZ _res);
        public static native void CResult_UpdateFeeDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UpdateFeeDecodeErrorZ_clone_ptr(LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UpdateFeeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFeeDecodeErrorZ CResult_UpdateFeeDecodeErrorZ_clone(const struct LDKCResult_UpdateFeeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFeeDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_ok(struct LDKUpdateFulfillHTLC o);
        public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_ok(long o);
        // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_err(long e);
+       // bool CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UpdateFulfillHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateFulfillHTLCDecodeErrorZ_free(struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateFulfillHTLCDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ CResult_UpdateFulfillHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateFulfillHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateFulfillHTLCDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_ok(struct LDKUpdateAddHTLC o);
        public static native long CResult_UpdateAddHTLCDecodeErrorZ_ok(long o);
        // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UpdateAddHTLCDecodeErrorZ_err(long e);
+       // bool CResult_UpdateAddHTLCDecodeErrorZ_is_ok(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UpdateAddHTLCDecodeErrorZ_is_ok(long o);
        // void CResult_UpdateAddHTLCDecodeErrorZ_free(struct LDKCResult_UpdateAddHTLCDecodeErrorZ _res);
        public static native void CResult_UpdateAddHTLCDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UpdateAddHTLCDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UpdateAddHTLCDecodeErrorZ CResult_UpdateAddHTLCDecodeErrorZ_clone(const struct LDKCResult_UpdateAddHTLCDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UpdateAddHTLCDecodeErrorZ_clone(long orig);
        // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_ok(struct LDKPing o);
        public static native long CResult_PingDecodeErrorZ_ok(long o);
        // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_PingDecodeErrorZ_err(long e);
+       // bool CResult_PingDecodeErrorZ_is_ok(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PingDecodeErrorZ_is_ok(long o);
        // void CResult_PingDecodeErrorZ_free(struct LDKCResult_PingDecodeErrorZ _res);
        public static native void CResult_PingDecodeErrorZ_free(long _res);
+       // uint64_t CResult_PingDecodeErrorZ_clone_ptr(LDKCResult_PingDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PingDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PingDecodeErrorZ CResult_PingDecodeErrorZ_clone(const struct LDKCResult_PingDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_PingDecodeErrorZ_clone(long orig);
        // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_ok(struct LDKPong o);
        public static native long CResult_PongDecodeErrorZ_ok(long o);
        // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_PongDecodeErrorZ_err(long e);
+       // bool CResult_PongDecodeErrorZ_is_ok(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_PongDecodeErrorZ_is_ok(long o);
        // void CResult_PongDecodeErrorZ_free(struct LDKCResult_PongDecodeErrorZ _res);
        public static native void CResult_PongDecodeErrorZ_free(long _res);
+       // uint64_t CResult_PongDecodeErrorZ_clone_ptr(LDKCResult_PongDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_PongDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_PongDecodeErrorZ CResult_PongDecodeErrorZ_clone(const struct LDKCResult_PongDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_PongDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(struct LDKUnsignedChannelAnnouncement o);
        public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_ok(long o);
        // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_err(long e);
+       // bool CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UnsignedChannelAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ _res);
        public static native void CResult_UnsignedChannelAnnouncementDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UnsignedChannelAnnouncementDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_ok(struct LDKChannelAnnouncement o);
        public static native long CResult_ChannelAnnouncementDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelAnnouncementDecodeErrorZ_err(long e);
+       // bool CResult_ChannelAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelAnnouncementDecodeErrorZ_free(struct LDKCResult_ChannelAnnouncementDecodeErrorZ _res);
        public static native void CResult_ChannelAnnouncementDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelAnnouncementDecodeErrorZ CResult_ChannelAnnouncementDecodeErrorZ_clone(const struct LDKCResult_ChannelAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelAnnouncementDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_ok(struct LDKUnsignedChannelUpdate o);
        public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_ok(long o);
        // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_err(long e);
+       // bool CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UnsignedChannelUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_UnsignedChannelUpdateDecodeErrorZ_free(struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ _res);
        public static native void CResult_UnsignedChannelUpdateDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ CResult_UnsignedChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_UnsignedChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UnsignedChannelUpdateDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_ok(struct LDKChannelUpdate o);
        public static native long CResult_ChannelUpdateDecodeErrorZ_ok(long o);
        // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ChannelUpdateDecodeErrorZ_err(long e);
+       // bool CResult_ChannelUpdateDecodeErrorZ_is_ok(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ChannelUpdateDecodeErrorZ_is_ok(long o);
        // void CResult_ChannelUpdateDecodeErrorZ_free(struct LDKCResult_ChannelUpdateDecodeErrorZ _res);
        public static native void CResult_ChannelUpdateDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ChannelUpdateDecodeErrorZ_clone_ptr(LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ChannelUpdateDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ChannelUpdateDecodeErrorZ CResult_ChannelUpdateDecodeErrorZ_clone(const struct LDKCResult_ChannelUpdateDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ChannelUpdateDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_ok(struct LDKErrorMessage o);
        public static native long CResult_ErrorMessageDecodeErrorZ_ok(long o);
        // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ErrorMessageDecodeErrorZ_err(long e);
+       // bool CResult_ErrorMessageDecodeErrorZ_is_ok(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ErrorMessageDecodeErrorZ_is_ok(long o);
        // void CResult_ErrorMessageDecodeErrorZ_free(struct LDKCResult_ErrorMessageDecodeErrorZ _res);
        public static native void CResult_ErrorMessageDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ErrorMessageDecodeErrorZ_clone_ptr(LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ErrorMessageDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ErrorMessageDecodeErrorZ CResult_ErrorMessageDecodeErrorZ_clone(const struct LDKCResult_ErrorMessageDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ErrorMessageDecodeErrorZ_clone(long orig);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(struct LDKUnsignedNodeAnnouncement o);
        public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_ok(long o);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_err(long e);
+       // bool CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_UnsignedNodeAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ _res);
        public static native void CResult_UnsignedNodeAnnouncementDecodeErrorZ_free(long _res);
+       // uint64_t CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_UnsignedNodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_UnsignedNodeAnnouncementDecodeErrorZ_clone(long orig);
        // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_ok(struct LDKNodeAnnouncement o);
        public static native long CResult_NodeAnnouncementDecodeErrorZ_ok(long o);
        // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_NodeAnnouncementDecodeErrorZ_err(long e);
+       // bool CResult_NodeAnnouncementDecodeErrorZ_is_ok(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_NodeAnnouncementDecodeErrorZ_is_ok(long o);
        // void CResult_NodeAnnouncementDecodeErrorZ_free(struct LDKCResult_NodeAnnouncementDecodeErrorZ _res);
        public static native void CResult_NodeAnnouncementDecodeErrorZ_free(long _res);
+       // uint64_t CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_NodeAnnouncementDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_NodeAnnouncementDecodeErrorZ CResult_NodeAnnouncementDecodeErrorZ_clone(const struct LDKCResult_NodeAnnouncementDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_NodeAnnouncementDecodeErrorZ_clone(long orig);
        // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_ok(struct LDKQueryShortChannelIds o);
        public static native long CResult_QueryShortChannelIdsDecodeErrorZ_ok(long o);
        // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_QueryShortChannelIdsDecodeErrorZ_err(long e);
+       // bool CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_QueryShortChannelIdsDecodeErrorZ_is_ok(long o);
        // void CResult_QueryShortChannelIdsDecodeErrorZ_free(struct LDKCResult_QueryShortChannelIdsDecodeErrorZ _res);
        public static native void CResult_QueryShortChannelIdsDecodeErrorZ_free(long _res);
+       // uint64_t CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_QueryShortChannelIdsDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_QueryShortChannelIdsDecodeErrorZ CResult_QueryShortChannelIdsDecodeErrorZ_clone(const struct LDKCResult_QueryShortChannelIdsDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_QueryShortChannelIdsDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(struct LDKReplyShortChannelIdsEnd o);
        public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_ok(long o);
        // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_err(long e);
+       // bool CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ReplyShortChannelIdsEndDecodeErrorZ_is_ok(long o);
        // void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ _res);
        public static native void CResult_ReplyShortChannelIdsEndDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(const struct LDKCResult_ReplyShortChannelIdsEndDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ReplyShortChannelIdsEndDecodeErrorZ_clone(long orig);
        // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_ok(struct LDKQueryChannelRange o);
        public static native long CResult_QueryChannelRangeDecodeErrorZ_ok(long o);
        // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_QueryChannelRangeDecodeErrorZ_err(long e);
+       // bool CResult_QueryChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_QueryChannelRangeDecodeErrorZ_is_ok(long o);
        // void CResult_QueryChannelRangeDecodeErrorZ_free(struct LDKCResult_QueryChannelRangeDecodeErrorZ _res);
        public static native void CResult_QueryChannelRangeDecodeErrorZ_free(long _res);
+       // uint64_t CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_QueryChannelRangeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_QueryChannelRangeDecodeErrorZ CResult_QueryChannelRangeDecodeErrorZ_clone(const struct LDKCResult_QueryChannelRangeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_QueryChannelRangeDecodeErrorZ_clone(long orig);
        // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_ok(struct LDKReplyChannelRange o);
        public static native long CResult_ReplyChannelRangeDecodeErrorZ_ok(long o);
        // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_ReplyChannelRangeDecodeErrorZ_err(long e);
+       // bool CResult_ReplyChannelRangeDecodeErrorZ_is_ok(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_ReplyChannelRangeDecodeErrorZ_is_ok(long o);
        // void CResult_ReplyChannelRangeDecodeErrorZ_free(struct LDKCResult_ReplyChannelRangeDecodeErrorZ _res);
        public static native void CResult_ReplyChannelRangeDecodeErrorZ_free(long _res);
+       // uint64_t CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_ReplyChannelRangeDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_ReplyChannelRangeDecodeErrorZ CResult_ReplyChannelRangeDecodeErrorZ_clone(const struct LDKCResult_ReplyChannelRangeDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_ReplyChannelRangeDecodeErrorZ_clone(long orig);
        // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_ok(struct LDKGossipTimestampFilter o);
        public static native long CResult_GossipTimestampFilterDecodeErrorZ_ok(long o);
        // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_err(struct LDKDecodeError e);
        public static native long CResult_GossipTimestampFilterDecodeErrorZ_err(long e);
+       // bool CResult_GossipTimestampFilterDecodeErrorZ_is_ok(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_GossipTimestampFilterDecodeErrorZ_is_ok(long o);
        // void CResult_GossipTimestampFilterDecodeErrorZ_free(struct LDKCResult_GossipTimestampFilterDecodeErrorZ _res);
        public static native void CResult_GossipTimestampFilterDecodeErrorZ_free(long _res);
+       // uint64_t CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR arg);
+       public static native long CResult_GossipTimestampFilterDecodeErrorZ_clone_ptr(long arg);
        // struct LDKCResult_GossipTimestampFilterDecodeErrorZ CResult_GossipTimestampFilterDecodeErrorZ_clone(const struct LDKCResult_GossipTimestampFilterDecodeErrorZ *NONNULL_PTR orig);
        public static native long CResult_GossipTimestampFilterDecodeErrorZ_clone(long orig);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_ok(struct LDKInvoice o);
        public static native long CResult_InvoiceSignOrCreationErrorZ_ok(long o);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_err(struct LDKSignOrCreationError e);
        public static native long CResult_InvoiceSignOrCreationErrorZ_err(long e);
+       // bool CResult_InvoiceSignOrCreationErrorZ_is_ok(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR o);
+       public static native boolean CResult_InvoiceSignOrCreationErrorZ_is_ok(long o);
        // void CResult_InvoiceSignOrCreationErrorZ_free(struct LDKCResult_InvoiceSignOrCreationErrorZ _res);
        public static native void CResult_InvoiceSignOrCreationErrorZ_free(long _res);
+       // uint64_t CResult_InvoiceSignOrCreationErrorZ_clone_ptr(LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR arg);
+       public static native long CResult_InvoiceSignOrCreationErrorZ_clone_ptr(long arg);
        // struct LDKCResult_InvoiceSignOrCreationErrorZ CResult_InvoiceSignOrCreationErrorZ_clone(const struct LDKCResult_InvoiceSignOrCreationErrorZ *NONNULL_PTR orig);
        public static native long CResult_InvoiceSignOrCreationErrorZ_clone(long orig);
        // struct LDKCOption_FilterZ COption_FilterZ_some(struct LDKFilter o);
@@ -2578,12 +3039,16 @@ public class bindings {
        public static native long CResult_LockedChannelMonitorNoneZ_ok(long o);
        // struct LDKCResult_LockedChannelMonitorNoneZ CResult_LockedChannelMonitorNoneZ_err(void);
        public static native long CResult_LockedChannelMonitorNoneZ_err();
+       // bool CResult_LockedChannelMonitorNoneZ_is_ok(const struct LDKCResult_LockedChannelMonitorNoneZ *NONNULL_PTR o);
+       public static native boolean CResult_LockedChannelMonitorNoneZ_is_ok(long o);
        // void CResult_LockedChannelMonitorNoneZ_free(struct LDKCResult_LockedChannelMonitorNoneZ _res);
        public static native void CResult_LockedChannelMonitorNoneZ_free(long _res);
        // void CVec_OutPointZ_free(struct LDKCVec_OutPointZ _res);
        public static native void CVec_OutPointZ_free(long[] _res);
        // void PaymentPurpose_free(struct LDKPaymentPurpose this_ptr);
        public static native void PaymentPurpose_free(long this_ptr);
+       // uint64_t PaymentPurpose_clone_ptr(LDKPaymentPurpose *NONNULL_PTR arg);
+       public static native long PaymentPurpose_clone_ptr(long arg);
        // struct LDKPaymentPurpose PaymentPurpose_clone(const struct LDKPaymentPurpose *NONNULL_PTR orig);
        public static native long PaymentPurpose_clone(long orig);
        // struct LDKPaymentPurpose PaymentPurpose_invoice_payment(struct LDKThirtyTwoBytes payment_preimage, struct LDKThirtyTwoBytes payment_secret, uint64_t user_payment_id);
@@ -2592,6 +3057,8 @@ public class bindings {
        public static native long PaymentPurpose_spontaneous_payment(byte[] a);
        // void ClosureReason_free(struct LDKClosureReason this_ptr);
        public static native void ClosureReason_free(long this_ptr);
+       // uint64_t ClosureReason_clone_ptr(LDKClosureReason *NONNULL_PTR arg);
+       public static native long ClosureReason_clone_ptr(long arg);
        // struct LDKClosureReason ClosureReason_clone(const struct LDKClosureReason *NONNULL_PTR orig);
        public static native long ClosureReason_clone(long orig);
        // struct LDKClosureReason ClosureReason_counterparty_force_closed(struct LDKStr peer_msg);
@@ -2610,8 +3077,12 @@ public class bindings {
        public static native long ClosureReason_outdated_channel_manager();
        // struct LDKCVec_u8Z ClosureReason_write(const struct LDKClosureReason *NONNULL_PTR obj);
        public static native byte[] ClosureReason_write(long obj);
+       // struct LDKCResult_COption_ClosureReasonZDecodeErrorZ ClosureReason_read(struct LDKu8slice ser);
+       public static native long ClosureReason_read(byte[] ser);
        // void Event_free(struct LDKEvent this_ptr);
        public static native void Event_free(long this_ptr);
+       // uint64_t Event_clone_ptr(LDKEvent *NONNULL_PTR arg);
+       public static native long Event_clone_ptr(long arg);
        // struct LDKEvent Event_clone(const struct LDKEvent *NONNULL_PTR orig);
        public static native long Event_clone(long orig);
        // struct LDKEvent Event_funding_generation_ready(struct LDKThirtyTwoBytes temporary_channel_id, uint64_t channel_value_satoshis, struct LDKCVec_u8Z output_script, uint64_t user_channel_id);
@@ -2634,8 +3105,12 @@ public class bindings {
        public static native long Event_discard_funding(byte[] channel_id, byte[] transaction);
        // struct LDKCVec_u8Z Event_write(const struct LDKEvent *NONNULL_PTR obj);
        public static native byte[] Event_write(long obj);
+       // struct LDKCResult_COption_EventZDecodeErrorZ Event_read(struct LDKu8slice ser);
+       public static native long Event_read(byte[] ser);
        // void MessageSendEvent_free(struct LDKMessageSendEvent this_ptr);
        public static native void MessageSendEvent_free(long this_ptr);
+       // uint64_t MessageSendEvent_clone_ptr(LDKMessageSendEvent *NONNULL_PTR arg);
+       public static native long MessageSendEvent_clone_ptr(long arg);
        // struct LDKMessageSendEvent MessageSendEvent_clone(const struct LDKMessageSendEvent *NONNULL_PTR orig);
        public static native long MessageSendEvent_clone(long orig);
        // struct LDKMessageSendEvent MessageSendEvent_send_accept_channel(struct LDKPublicKey node_id, struct LDKAcceptChannel msg);
@@ -2684,6 +3159,8 @@ public class bindings {
        public static native void EventHandler_free(long this_ptr);
        // void APIError_free(struct LDKAPIError this_ptr);
        public static native void APIError_free(long this_ptr);
+       // uint64_t APIError_clone_ptr(LDKAPIError *NONNULL_PTR arg);
+       public static native long APIError_clone_ptr(long arg);
        // struct LDKAPIError APIError_clone(const struct LDKAPIError *NONNULL_PTR orig);
        public static native long APIError_clone(long orig);
        // struct LDKAPIError APIError_apimisuse_error(struct LDKStr err);
@@ -2722,6 +3199,32 @@ public class bindings {
        public static native long Level_hash(long o);
        // MUST_USE_RES enum LDKLevel Level_max(void);
        public static native Level Level_max();
+       // void Record_free(struct LDKRecord this_obj);
+       public static native void Record_free(long this_obj);
+       // enum LDKLevel Record_get_level(const struct LDKRecord *NONNULL_PTR this_ptr);
+       public static native Level Record_get_level(long this_ptr);
+       // void Record_set_level(struct LDKRecord *NONNULL_PTR this_ptr, enum LDKLevel val);
+       public static native void Record_set_level(long this_ptr, Level val);
+       // struct LDKStr Record_get_args(const struct LDKRecord *NONNULL_PTR this_ptr);
+       public static native String Record_get_args(long this_ptr);
+       // void Record_set_args(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
+       public static native void Record_set_args(long this_ptr, String val);
+       // struct LDKStr Record_get_module_path(const struct LDKRecord *NONNULL_PTR this_ptr);
+       public static native String Record_get_module_path(long this_ptr);
+       // void Record_set_module_path(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
+       public static native void Record_set_module_path(long this_ptr, String val);
+       // struct LDKStr Record_get_file(const struct LDKRecord *NONNULL_PTR this_ptr);
+       public static native String Record_get_file(long this_ptr);
+       // void Record_set_file(struct LDKRecord *NONNULL_PTR this_ptr, struct LDKStr val);
+       public static native void Record_set_file(long this_ptr, String val);
+       // uint32_t Record_get_line(const struct LDKRecord *NONNULL_PTR this_ptr);
+       public static native int Record_get_line(long this_ptr);
+       // void Record_set_line(struct LDKRecord *NONNULL_PTR this_ptr, uint32_t val);
+       public static native void Record_set_line(long this_ptr, int val);
+       // uint64_t Record_clone_ptr(LDKRecord *NONNULL_PTR arg);
+       public static native long Record_clone_ptr(long arg);
+       // struct LDKRecord Record_clone(const struct LDKRecord *NONNULL_PTR orig);
+       public static native long Record_clone(long orig);
        // void Logger_free(struct LDKLogger this_ptr);
        public static native void Logger_free(long this_ptr);
        // void ChannelHandshakeConfig_free(struct LDKChannelHandshakeConfig this_obj);
@@ -2740,6 +3243,8 @@ public class bindings {
        public static native void ChannelHandshakeConfig_set_our_htlc_minimum_msat(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_new(uint32_t minimum_depth_arg, uint16_t our_to_self_delay_arg, uint64_t our_htlc_minimum_msat_arg);
        public static native long ChannelHandshakeConfig_new(int minimum_depth_arg, short our_to_self_delay_arg, long our_htlc_minimum_msat_arg);
+       // uint64_t ChannelHandshakeConfig_clone_ptr(LDKChannelHandshakeConfig *NONNULL_PTR arg);
+       public static native long ChannelHandshakeConfig_clone_ptr(long arg);
        // struct LDKChannelHandshakeConfig ChannelHandshakeConfig_clone(const struct LDKChannelHandshakeConfig *NONNULL_PTR orig);
        public static native long ChannelHandshakeConfig_clone(long orig);
        // MUST_USE_RES struct LDKChannelHandshakeConfig ChannelHandshakeConfig_default(void);
@@ -2780,6 +3285,8 @@ public class bindings {
        public static native void ChannelHandshakeLimits_set_their_to_self_delay(long this_ptr, short val);
        // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_new(uint64_t min_funding_satoshis_arg, uint64_t max_htlc_minimum_msat_arg, uint64_t min_max_htlc_value_in_flight_msat_arg, uint64_t max_channel_reserve_satoshis_arg, uint16_t min_max_accepted_htlcs_arg, uint32_t max_minimum_depth_arg, bool force_announced_channel_preference_arg, uint16_t their_to_self_delay_arg);
        public static native long ChannelHandshakeLimits_new(long min_funding_satoshis_arg, long max_htlc_minimum_msat_arg, long min_max_htlc_value_in_flight_msat_arg, long max_channel_reserve_satoshis_arg, short min_max_accepted_htlcs_arg, int max_minimum_depth_arg, boolean force_announced_channel_preference_arg, short their_to_self_delay_arg);
+       // uint64_t ChannelHandshakeLimits_clone_ptr(LDKChannelHandshakeLimits *NONNULL_PTR arg);
+       public static native long ChannelHandshakeLimits_clone_ptr(long arg);
        // struct LDKChannelHandshakeLimits ChannelHandshakeLimits_clone(const struct LDKChannelHandshakeLimits *NONNULL_PTR orig);
        public static native long ChannelHandshakeLimits_clone(long orig);
        // MUST_USE_RES struct LDKChannelHandshakeLimits ChannelHandshakeLimits_default(void);
@@ -2816,6 +3323,8 @@ public class bindings {
        public static native void ChannelConfig_set_force_close_avoidance_max_fee_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelConfig ChannelConfig_new(uint32_t forwarding_fee_proportional_millionths_arg, uint32_t forwarding_fee_base_msat_arg, uint16_t cltv_expiry_delta_arg, bool announced_channel_arg, bool commit_upfront_shutdown_pubkey_arg, uint64_t max_dust_htlc_exposure_msat_arg, uint64_t force_close_avoidance_max_fee_satoshis_arg);
        public static native long ChannelConfig_new(int forwarding_fee_proportional_millionths_arg, int forwarding_fee_base_msat_arg, short cltv_expiry_delta_arg, boolean announced_channel_arg, boolean commit_upfront_shutdown_pubkey_arg, long max_dust_htlc_exposure_msat_arg, long force_close_avoidance_max_fee_satoshis_arg);
+       // uint64_t ChannelConfig_clone_ptr(LDKChannelConfig *NONNULL_PTR arg);
+       public static native long ChannelConfig_clone_ptr(long arg);
        // struct LDKChannelConfig ChannelConfig_clone(const struct LDKChannelConfig *NONNULL_PTR orig);
        public static native long ChannelConfig_clone(long orig);
        // MUST_USE_RES struct LDKChannelConfig ChannelConfig_default(void);
@@ -2844,12 +3353,16 @@ public class bindings {
        public static native void UserConfig_set_accept_forwards_to_priv_channels(long this_ptr, boolean val);
        // MUST_USE_RES struct LDKUserConfig UserConfig_new(struct LDKChannelHandshakeConfig own_channel_config_arg, struct LDKChannelHandshakeLimits peer_channel_config_limits_arg, struct LDKChannelConfig channel_options_arg, bool accept_forwards_to_priv_channels_arg);
        public static native long UserConfig_new(long own_channel_config_arg, long peer_channel_config_limits_arg, long channel_options_arg, boolean accept_forwards_to_priv_channels_arg);
+       // uint64_t UserConfig_clone_ptr(LDKUserConfig *NONNULL_PTR arg);
+       public static native long UserConfig_clone_ptr(long arg);
        // struct LDKUserConfig UserConfig_clone(const struct LDKUserConfig *NONNULL_PTR orig);
        public static native long UserConfig_clone(long orig);
        // MUST_USE_RES struct LDKUserConfig UserConfig_default(void);
        public static native long UserConfig_default();
        // void BestBlock_free(struct LDKBestBlock this_obj);
        public static native void BestBlock_free(long this_obj);
+       // uint64_t BestBlock_clone_ptr(LDKBestBlock *NONNULL_PTR arg);
+       public static native long BestBlock_clone_ptr(long arg);
        // struct LDKBestBlock BestBlock_clone(const struct LDKBestBlock *NONNULL_PTR orig);
        public static native long BestBlock_clone(long orig);
        // MUST_USE_RES struct LDKBestBlock BestBlock_from_genesis(enum LDKNetwork network);
@@ -2898,6 +3411,8 @@ public class bindings {
        public static native void WatchedOutput_set_script_pubkey(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKWatchedOutput WatchedOutput_new(struct LDKThirtyTwoBytes block_hash_arg, struct LDKOutPoint outpoint_arg, struct LDKCVec_u8Z script_pubkey_arg);
        public static native long WatchedOutput_new(byte[] block_hash_arg, long outpoint_arg, byte[] script_pubkey_arg);
+       // uint64_t WatchedOutput_clone_ptr(LDKWatchedOutput *NONNULL_PTR arg);
+       public static native long WatchedOutput_clone_ptr(long arg);
        // struct LDKWatchedOutput WatchedOutput_clone(const struct LDKWatchedOutput *NONNULL_PTR orig);
        public static native long WatchedOutput_clone(long orig);
        // uint64_t WatchedOutput_hash(const struct LDKWatchedOutput *NONNULL_PTR o);
@@ -2918,6 +3433,8 @@ public class bindings {
        public static native void FeeEstimator_free(long this_ptr);
        // void MonitorUpdateId_free(struct LDKMonitorUpdateId this_obj);
        public static native void MonitorUpdateId_free(long this_obj);
+       // uint64_t MonitorUpdateId_clone_ptr(LDKMonitorUpdateId *NONNULL_PTR arg);
+       public static native long MonitorUpdateId_clone_ptr(long arg);
        // struct LDKMonitorUpdateId MonitorUpdateId_clone(const struct LDKMonitorUpdateId *NONNULL_PTR orig);
        public static native long MonitorUpdateId_clone(long orig);
        // uint64_t MonitorUpdateId_hash(const struct LDKMonitorUpdateId *NONNULL_PTR o);
@@ -2954,6 +3471,8 @@ public class bindings {
        public static native long ChannelMonitorUpdate_get_update_id(long this_ptr);
        // void ChannelMonitorUpdate_set_update_id(struct LDKChannelMonitorUpdate *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ChannelMonitorUpdate_set_update_id(long this_ptr, long val);
+       // uint64_t ChannelMonitorUpdate_clone_ptr(LDKChannelMonitorUpdate *NONNULL_PTR arg);
+       public static native long ChannelMonitorUpdate_clone_ptr(long arg);
        // struct LDKChannelMonitorUpdate ChannelMonitorUpdate_clone(const struct LDKChannelMonitorUpdate *NONNULL_PTR orig);
        public static native long ChannelMonitorUpdate_clone(long orig);
        // struct LDKCVec_u8Z ChannelMonitorUpdate_write(const struct LDKChannelMonitorUpdate *NONNULL_PTR obj);
@@ -2968,10 +3487,14 @@ public class bindings {
        public static native void MonitorUpdateError_set_a(long this_ptr, String val);
        // MUST_USE_RES struct LDKMonitorUpdateError MonitorUpdateError_new(struct LDKStr a_arg);
        public static native long MonitorUpdateError_new(String a_arg);
+       // uint64_t MonitorUpdateError_clone_ptr(LDKMonitorUpdateError *NONNULL_PTR arg);
+       public static native long MonitorUpdateError_clone_ptr(long arg);
        // struct LDKMonitorUpdateError MonitorUpdateError_clone(const struct LDKMonitorUpdateError *NONNULL_PTR orig);
        public static native long MonitorUpdateError_clone(long orig);
        // void MonitorEvent_free(struct LDKMonitorEvent this_ptr);
        public static native void MonitorEvent_free(long this_ptr);
+       // uint64_t MonitorEvent_clone_ptr(LDKMonitorEvent *NONNULL_PTR arg);
+       public static native long MonitorEvent_clone_ptr(long arg);
        // struct LDKMonitorEvent MonitorEvent_clone(const struct LDKMonitorEvent *NONNULL_PTR orig);
        public static native long MonitorEvent_clone(long orig);
        // struct LDKMonitorEvent MonitorEvent_htlcevent(struct LDKHTLCUpdate a);
@@ -2984,8 +3507,12 @@ public class bindings {
        public static native long MonitorEvent_update_failed(long a);
        // struct LDKCVec_u8Z MonitorEvent_write(const struct LDKMonitorEvent *NONNULL_PTR obj);
        public static native byte[] MonitorEvent_write(long obj);
+       // struct LDKCResult_COption_MonitorEventZDecodeErrorZ MonitorEvent_read(struct LDKu8slice ser);
+       public static native long MonitorEvent_read(byte[] ser);
        // void HTLCUpdate_free(struct LDKHTLCUpdate this_obj);
        public static native void HTLCUpdate_free(long this_obj);
+       // uint64_t HTLCUpdate_clone_ptr(LDKHTLCUpdate *NONNULL_PTR arg);
+       public static native long HTLCUpdate_clone_ptr(long arg);
        // struct LDKHTLCUpdate HTLCUpdate_clone(const struct LDKHTLCUpdate *NONNULL_PTR orig);
        public static native long HTLCUpdate_clone(long orig);
        // struct LDKCVec_u8Z HTLCUpdate_write(const struct LDKHTLCUpdate *NONNULL_PTR obj);
@@ -2994,6 +3521,8 @@ public class bindings {
        public static native long HTLCUpdate_read(byte[] ser);
        // void Balance_free(struct LDKBalance this_ptr);
        public static native void Balance_free(long this_ptr);
+       // uint64_t Balance_clone_ptr(LDKBalance *NONNULL_PTR arg);
+       public static native long Balance_clone_ptr(long arg);
        // struct LDKBalance Balance_clone(const struct LDKBalance *NONNULL_PTR orig);
        public static native long Balance_clone(long orig);
        // struct LDKBalance Balance_claimable_on_channel_close(uint64_t claimable_amount_satoshis);
@@ -3008,6 +3537,8 @@ public class bindings {
        public static native boolean Balance_eq(long a, long b);
        // void ChannelMonitor_free(struct LDKChannelMonitor this_obj);
        public static native void ChannelMonitor_free(long this_obj);
+       // uint64_t ChannelMonitor_clone_ptr(LDKChannelMonitor *NONNULL_PTR arg);
+       public static native long ChannelMonitor_clone_ptr(long arg);
        // struct LDKChannelMonitor ChannelMonitor_clone(const struct LDKChannelMonitor *NONNULL_PTR orig);
        public static native long ChannelMonitor_clone(long orig);
        // struct LDKCVec_u8Z ChannelMonitor_write(const struct LDKChannelMonitor *NONNULL_PTR obj);
@@ -3058,6 +3589,8 @@ public class bindings {
        public static native void OutPoint_set_index(long this_ptr, short val);
        // MUST_USE_RES struct LDKOutPoint OutPoint_new(struct LDKThirtyTwoBytes txid_arg, uint16_t index_arg);
        public static native long OutPoint_new(byte[] txid_arg, short index_arg);
+       // uint64_t OutPoint_clone_ptr(LDKOutPoint *NONNULL_PTR arg);
+       public static native long OutPoint_clone_ptr(long arg);
        // struct LDKOutPoint OutPoint_clone(const struct LDKOutPoint *NONNULL_PTR orig);
        public static native long OutPoint_clone(long orig);
        // bool OutPoint_eq(const struct LDKOutPoint *NONNULL_PTR a, const struct LDKOutPoint *NONNULL_PTR b);
@@ -3100,6 +3633,8 @@ public class bindings {
        public static native void DelayedPaymentOutputDescriptor_set_channel_value_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKPublicKey per_commitment_point_arg, uint16_t to_self_delay_arg, struct LDKTxOut output_arg, struct LDKPublicKey revocation_pubkey_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
        public static native long DelayedPaymentOutputDescriptor_new(long outpoint_arg, byte[] per_commitment_point_arg, short to_self_delay_arg, long output_arg, byte[] revocation_pubkey_arg, byte[] channel_keys_id_arg, long channel_value_satoshis_arg);
+       // uint64_t DelayedPaymentOutputDescriptor_clone_ptr(LDKDelayedPaymentOutputDescriptor *NONNULL_PTR arg);
+       public static native long DelayedPaymentOutputDescriptor_clone_ptr(long arg);
        // struct LDKDelayedPaymentOutputDescriptor DelayedPaymentOutputDescriptor_clone(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR orig);
        public static native long DelayedPaymentOutputDescriptor_clone(long orig);
        // struct LDKCVec_u8Z DelayedPaymentOutputDescriptor_write(const struct LDKDelayedPaymentOutputDescriptor *NONNULL_PTR obj);
@@ -3124,6 +3659,8 @@ public class bindings {
        public static native void StaticPaymentOutputDescriptor_set_channel_value_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_new(struct LDKOutPoint outpoint_arg, struct LDKTxOut output_arg, struct LDKThirtyTwoBytes channel_keys_id_arg, uint64_t channel_value_satoshis_arg);
        public static native long StaticPaymentOutputDescriptor_new(long outpoint_arg, long output_arg, byte[] channel_keys_id_arg, long channel_value_satoshis_arg);
+       // uint64_t StaticPaymentOutputDescriptor_clone_ptr(LDKStaticPaymentOutputDescriptor *NONNULL_PTR arg);
+       public static native long StaticPaymentOutputDescriptor_clone_ptr(long arg);
        // struct LDKStaticPaymentOutputDescriptor StaticPaymentOutputDescriptor_clone(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR orig);
        public static native long StaticPaymentOutputDescriptor_clone(long orig);
        // struct LDKCVec_u8Z StaticPaymentOutputDescriptor_write(const struct LDKStaticPaymentOutputDescriptor *NONNULL_PTR obj);
@@ -3132,6 +3669,8 @@ public class bindings {
        public static native long StaticPaymentOutputDescriptor_read(byte[] ser);
        // void SpendableOutputDescriptor_free(struct LDKSpendableOutputDescriptor this_ptr);
        public static native void SpendableOutputDescriptor_free(long this_ptr);
+       // uint64_t SpendableOutputDescriptor_clone_ptr(LDKSpendableOutputDescriptor *NONNULL_PTR arg);
+       public static native long SpendableOutputDescriptor_clone_ptr(long arg);
        // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_clone(const struct LDKSpendableOutputDescriptor *NONNULL_PTR orig);
        public static native long SpendableOutputDescriptor_clone(long orig);
        // struct LDKSpendableOutputDescriptor SpendableOutputDescriptor_static_output(struct LDKOutPoint outpoint, struct LDKTxOut output);
@@ -3146,6 +3685,8 @@ public class bindings {
        public static native long SpendableOutputDescriptor_read(byte[] ser);
        // void BaseSign_free(struct LDKBaseSign this_ptr);
        public static native void BaseSign_free(long this_ptr);
+       // uint64_t Sign_clone_ptr(LDKSign *NONNULL_PTR arg);
+       public static native long Sign_clone_ptr(long arg);
        // struct LDKSign Sign_clone(const struct LDKSign *NONNULL_PTR orig);
        public static native long Sign_clone(long orig);
        // void Sign_free(struct LDKSign this_ptr);
@@ -3178,6 +3719,8 @@ public class bindings {
        public static native byte[] InMemorySigner_get_commitment_seed(long this_ptr);
        // void InMemorySigner_set_commitment_seed(struct LDKInMemorySigner *NONNULL_PTR this_ptr, struct LDKThirtyTwoBytes val);
        public static native void InMemorySigner_set_commitment_seed(long this_ptr, byte[] val);
+       // uint64_t InMemorySigner_clone_ptr(LDKInMemorySigner *NONNULL_PTR arg);
+       public static native long InMemorySigner_clone_ptr(long arg);
        // struct LDKInMemorySigner InMemorySigner_clone(const struct LDKInMemorySigner *NONNULL_PTR orig);
        public static native long InMemorySigner_clone(long orig);
        // MUST_USE_RES struct LDKInMemorySigner InMemorySigner_new(struct LDKSecretKey funding_key, struct LDKSecretKey revocation_base_key, struct LDKSecretKey payment_key, struct LDKSecretKey delayed_payment_base_key, struct LDKSecretKey htlc_base_key, struct LDKThirtyTwoBytes commitment_seed, uint64_t channel_value_satoshis, struct LDKThirtyTwoBytes channel_keys_id);
@@ -3230,6 +3773,8 @@ public class bindings {
        public static native void ChainParameters_set_best_block(long this_ptr, long val);
        // MUST_USE_RES struct LDKChainParameters ChainParameters_new(enum LDKNetwork network_arg, struct LDKBestBlock best_block_arg);
        public static native long ChainParameters_new(Network network_arg, long best_block_arg);
+       // uint64_t ChainParameters_clone_ptr(LDKChainParameters *NONNULL_PTR arg);
+       public static native long ChainParameters_clone_ptr(long arg);
        // struct LDKChainParameters ChainParameters_clone(const struct LDKChainParameters *NONNULL_PTR orig);
        public static native long ChainParameters_clone(long orig);
        // void CounterpartyForwardingInfo_free(struct LDKCounterpartyForwardingInfo this_obj);
@@ -3248,6 +3793,8 @@ public class bindings {
        public static native void CounterpartyForwardingInfo_set_cltv_expiry_delta(long this_ptr, short val);
        // MUST_USE_RES struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_new(uint32_t fee_base_msat_arg, uint32_t fee_proportional_millionths_arg, uint16_t cltv_expiry_delta_arg);
        public static native long CounterpartyForwardingInfo_new(int fee_base_msat_arg, int fee_proportional_millionths_arg, short cltv_expiry_delta_arg);
+       // uint64_t CounterpartyForwardingInfo_clone_ptr(LDKCounterpartyForwardingInfo *NONNULL_PTR arg);
+       public static native long CounterpartyForwardingInfo_clone_ptr(long arg);
        // struct LDKCounterpartyForwardingInfo CounterpartyForwardingInfo_clone(const struct LDKCounterpartyForwardingInfo *NONNULL_PTR orig);
        public static native long CounterpartyForwardingInfo_clone(long orig);
        // void ChannelCounterparty_free(struct LDKChannelCounterparty this_obj);
@@ -3270,6 +3817,8 @@ public class bindings {
        public static native void ChannelCounterparty_set_forwarding_info(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelCounterparty ChannelCounterparty_new(struct LDKPublicKey node_id_arg, struct LDKInitFeatures features_arg, uint64_t unspendable_punishment_reserve_arg, struct LDKCounterpartyForwardingInfo forwarding_info_arg);
        public static native long ChannelCounterparty_new(byte[] node_id_arg, long features_arg, long unspendable_punishment_reserve_arg, long forwarding_info_arg);
+       // uint64_t ChannelCounterparty_clone_ptr(LDKChannelCounterparty *NONNULL_PTR arg);
+       public static native long ChannelCounterparty_clone_ptr(long arg);
        // struct LDKChannelCounterparty ChannelCounterparty_clone(const struct LDKChannelCounterparty *NONNULL_PTR orig);
        public static native long ChannelCounterparty_clone(long orig);
        // void ChannelDetails_free(struct LDKChannelDetails this_obj);
@@ -3336,10 +3885,14 @@ public class bindings {
        public static native void ChannelDetails_set_is_public(long this_ptr, boolean val);
        // MUST_USE_RES struct LDKChannelDetails ChannelDetails_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKChannelCounterparty counterparty_arg, struct LDKOutPoint funding_txo_arg, struct LDKCOption_u64Z short_channel_id_arg, uint64_t channel_value_satoshis_arg, struct LDKCOption_u64Z unspendable_punishment_reserve_arg, uint64_t user_channel_id_arg, uint64_t outbound_capacity_msat_arg, uint64_t inbound_capacity_msat_arg, struct LDKCOption_u32Z confirmations_required_arg, struct LDKCOption_u16Z force_close_spend_delay_arg, bool is_outbound_arg, bool is_funding_locked_arg, bool is_usable_arg, bool is_public_arg);
        public static native long ChannelDetails_new(byte[] channel_id_arg, long counterparty_arg, long funding_txo_arg, long short_channel_id_arg, long channel_value_satoshis_arg, long unspendable_punishment_reserve_arg, long user_channel_id_arg, long outbound_capacity_msat_arg, long inbound_capacity_msat_arg, long confirmations_required_arg, long force_close_spend_delay_arg, boolean is_outbound_arg, boolean is_funding_locked_arg, boolean is_usable_arg, boolean is_public_arg);
+       // uint64_t ChannelDetails_clone_ptr(LDKChannelDetails *NONNULL_PTR arg);
+       public static native long ChannelDetails_clone_ptr(long arg);
        // struct LDKChannelDetails ChannelDetails_clone(const struct LDKChannelDetails *NONNULL_PTR orig);
        public static native long ChannelDetails_clone(long orig);
        // void PaymentSendFailure_free(struct LDKPaymentSendFailure this_ptr);
        public static native void PaymentSendFailure_free(long this_ptr);
+       // uint64_t PaymentSendFailure_clone_ptr(LDKPaymentSendFailure *NONNULL_PTR arg);
+       public static native long PaymentSendFailure_clone_ptr(long arg);
        // struct LDKPaymentSendFailure PaymentSendFailure_clone(const struct LDKPaymentSendFailure *NONNULL_PTR orig);
        public static native long PaymentSendFailure_clone(long orig);
        // struct LDKPaymentSendFailure PaymentSendFailure_parameter_error(struct LDKAPIError a);
@@ -3442,6 +3995,8 @@ public class bindings {
        public static native long C2Tuple_BlockHashChannelManagerZ_read(byte[] ser, long arg);
        // void DecodeError_free(struct LDKDecodeError this_obj);
        public static native void DecodeError_free(long this_obj);
+       // uint64_t DecodeError_clone_ptr(LDKDecodeError *NONNULL_PTR arg);
+       public static native long DecodeError_clone_ptr(long arg);
        // struct LDKDecodeError DecodeError_clone(const struct LDKDecodeError *NONNULL_PTR orig);
        public static native long DecodeError_clone(long orig);
        // void Init_free(struct LDKInit this_obj);
@@ -3452,6 +4007,8 @@ public class bindings {
        public static native void Init_set_features(long this_ptr, long val);
        // MUST_USE_RES struct LDKInit Init_new(struct LDKInitFeatures features_arg);
        public static native long Init_new(long features_arg);
+       // uint64_t Init_clone_ptr(LDKInit *NONNULL_PTR arg);
+       public static native long Init_clone_ptr(long arg);
        // struct LDKInit Init_clone(const struct LDKInit *NONNULL_PTR orig);
        public static native long Init_clone(long orig);
        // void ErrorMessage_free(struct LDKErrorMessage this_obj);
@@ -3466,6 +4023,8 @@ public class bindings {
        public static native void ErrorMessage_set_data(long this_ptr, String val);
        // MUST_USE_RES struct LDKErrorMessage ErrorMessage_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKStr data_arg);
        public static native long ErrorMessage_new(byte[] channel_id_arg, String data_arg);
+       // uint64_t ErrorMessage_clone_ptr(LDKErrorMessage *NONNULL_PTR arg);
+       public static native long ErrorMessage_clone_ptr(long arg);
        // struct LDKErrorMessage ErrorMessage_clone(const struct LDKErrorMessage *NONNULL_PTR orig);
        public static native long ErrorMessage_clone(long orig);
        // void Ping_free(struct LDKPing this_obj);
@@ -3480,6 +4039,8 @@ public class bindings {
        public static native void Ping_set_byteslen(long this_ptr, short val);
        // MUST_USE_RES struct LDKPing Ping_new(uint16_t ponglen_arg, uint16_t byteslen_arg);
        public static native long Ping_new(short ponglen_arg, short byteslen_arg);
+       // uint64_t Ping_clone_ptr(LDKPing *NONNULL_PTR arg);
+       public static native long Ping_clone_ptr(long arg);
        // struct LDKPing Ping_clone(const struct LDKPing *NONNULL_PTR orig);
        public static native long Ping_clone(long orig);
        // void Pong_free(struct LDKPong this_obj);
@@ -3490,6 +4051,8 @@ public class bindings {
        public static native void Pong_set_byteslen(long this_ptr, short val);
        // MUST_USE_RES struct LDKPong Pong_new(uint16_t byteslen_arg);
        public static native long Pong_new(short byteslen_arg);
+       // uint64_t Pong_clone_ptr(LDKPong *NONNULL_PTR arg);
+       public static native long Pong_clone_ptr(long arg);
        // struct LDKPong Pong_clone(const struct LDKPong *NONNULL_PTR orig);
        public static native long Pong_clone(long orig);
        // void OpenChannel_free(struct LDKOpenChannel this_obj);
@@ -3566,6 +4129,8 @@ public class bindings {
        public static native byte OpenChannel_get_channel_flags(long this_ptr);
        // void OpenChannel_set_channel_flags(struct LDKOpenChannel *NONNULL_PTR this_ptr, uint8_t val);
        public static native void OpenChannel_set_channel_flags(long this_ptr, byte val);
+       // uint64_t OpenChannel_clone_ptr(LDKOpenChannel *NONNULL_PTR arg);
+       public static native long OpenChannel_clone_ptr(long arg);
        // struct LDKOpenChannel OpenChannel_clone(const struct LDKOpenChannel *NONNULL_PTR orig);
        public static native long OpenChannel_clone(long orig);
        // void AcceptChannel_free(struct LDKAcceptChannel this_obj);
@@ -3626,6 +4191,8 @@ public class bindings {
        public static native byte[] AcceptChannel_get_first_per_commitment_point(long this_ptr);
        // void AcceptChannel_set_first_per_commitment_point(struct LDKAcceptChannel *NONNULL_PTR this_ptr, struct LDKPublicKey val);
        public static native void AcceptChannel_set_first_per_commitment_point(long this_ptr, byte[] val);
+       // uint64_t AcceptChannel_clone_ptr(LDKAcceptChannel *NONNULL_PTR arg);
+       public static native long AcceptChannel_clone_ptr(long arg);
        // struct LDKAcceptChannel AcceptChannel_clone(const struct LDKAcceptChannel *NONNULL_PTR orig);
        public static native long AcceptChannel_clone(long orig);
        // void FundingCreated_free(struct LDKFundingCreated this_obj);
@@ -3648,6 +4215,8 @@ public class bindings {
        public static native void FundingCreated_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKFundingCreated FundingCreated_new(struct LDKThirtyTwoBytes temporary_channel_id_arg, struct LDKThirtyTwoBytes funding_txid_arg, uint16_t funding_output_index_arg, struct LDKSignature signature_arg);
        public static native long FundingCreated_new(byte[] temporary_channel_id_arg, byte[] funding_txid_arg, short funding_output_index_arg, byte[] signature_arg);
+       // uint64_t FundingCreated_clone_ptr(LDKFundingCreated *NONNULL_PTR arg);
+       public static native long FundingCreated_clone_ptr(long arg);
        // struct LDKFundingCreated FundingCreated_clone(const struct LDKFundingCreated *NONNULL_PTR orig);
        public static native long FundingCreated_clone(long orig);
        // void FundingSigned_free(struct LDKFundingSigned this_obj);
@@ -3662,6 +4231,8 @@ public class bindings {
        public static native void FundingSigned_set_signature(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKFundingSigned FundingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg);
        public static native long FundingSigned_new(byte[] channel_id_arg, byte[] signature_arg);
+       // uint64_t FundingSigned_clone_ptr(LDKFundingSigned *NONNULL_PTR arg);
+       public static native long FundingSigned_clone_ptr(long arg);
        // struct LDKFundingSigned FundingSigned_clone(const struct LDKFundingSigned *NONNULL_PTR orig);
        public static native long FundingSigned_clone(long orig);
        // void FundingLocked_free(struct LDKFundingLocked this_obj);
@@ -3676,6 +4247,8 @@ public class bindings {
        public static native void FundingLocked_set_next_per_commitment_point(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKFundingLocked FundingLocked_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKPublicKey next_per_commitment_point_arg);
        public static native long FundingLocked_new(byte[] channel_id_arg, byte[] next_per_commitment_point_arg);
+       // uint64_t FundingLocked_clone_ptr(LDKFundingLocked *NONNULL_PTR arg);
+       public static native long FundingLocked_clone_ptr(long arg);
        // struct LDKFundingLocked FundingLocked_clone(const struct LDKFundingLocked *NONNULL_PTR orig);
        public static native long FundingLocked_clone(long orig);
        // void Shutdown_free(struct LDKShutdown this_obj);
@@ -3690,6 +4263,8 @@ public class bindings {
        public static native void Shutdown_set_scriptpubkey(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKShutdown Shutdown_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKCVec_u8Z scriptpubkey_arg);
        public static native long Shutdown_new(byte[] channel_id_arg, byte[] scriptpubkey_arg);
+       // uint64_t Shutdown_clone_ptr(LDKShutdown *NONNULL_PTR arg);
+       public static native long Shutdown_clone_ptr(long arg);
        // struct LDKShutdown Shutdown_clone(const struct LDKShutdown *NONNULL_PTR orig);
        public static native long Shutdown_clone(long orig);
        // void ClosingSignedFeeRange_free(struct LDKClosingSignedFeeRange this_obj);
@@ -3704,6 +4279,8 @@ public class bindings {
        public static native void ClosingSignedFeeRange_set_max_fee_satoshis(long this_ptr, long val);
        // MUST_USE_RES struct LDKClosingSignedFeeRange ClosingSignedFeeRange_new(uint64_t min_fee_satoshis_arg, uint64_t max_fee_satoshis_arg);
        public static native long ClosingSignedFeeRange_new(long min_fee_satoshis_arg, long max_fee_satoshis_arg);
+       // uint64_t ClosingSignedFeeRange_clone_ptr(LDKClosingSignedFeeRange *NONNULL_PTR arg);
+       public static native long ClosingSignedFeeRange_clone_ptr(long arg);
        // struct LDKClosingSignedFeeRange ClosingSignedFeeRange_clone(const struct LDKClosingSignedFeeRange *NONNULL_PTR orig);
        public static native long ClosingSignedFeeRange_clone(long orig);
        // void ClosingSigned_free(struct LDKClosingSigned this_obj);
@@ -3726,6 +4303,8 @@ public class bindings {
        public static native void ClosingSigned_set_fee_range(long this_ptr, long val);
        // MUST_USE_RES struct LDKClosingSigned ClosingSigned_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t fee_satoshis_arg, struct LDKSignature signature_arg, struct LDKClosingSignedFeeRange fee_range_arg);
        public static native long ClosingSigned_new(byte[] channel_id_arg, long fee_satoshis_arg, byte[] signature_arg, long fee_range_arg);
+       // uint64_t ClosingSigned_clone_ptr(LDKClosingSigned *NONNULL_PTR arg);
+       public static native long ClosingSigned_clone_ptr(long arg);
        // struct LDKClosingSigned ClosingSigned_clone(const struct LDKClosingSigned *NONNULL_PTR orig);
        public static native long ClosingSigned_clone(long orig);
        // void UpdateAddHTLC_free(struct LDKUpdateAddHTLC this_obj);
@@ -3750,6 +4329,8 @@ public class bindings {
        public static native int UpdateAddHTLC_get_cltv_expiry(long this_ptr);
        // void UpdateAddHTLC_set_cltv_expiry(struct LDKUpdateAddHTLC *NONNULL_PTR this_ptr, uint32_t val);
        public static native void UpdateAddHTLC_set_cltv_expiry(long this_ptr, int val);
+       // uint64_t UpdateAddHTLC_clone_ptr(LDKUpdateAddHTLC *NONNULL_PTR arg);
+       public static native long UpdateAddHTLC_clone_ptr(long arg);
        // struct LDKUpdateAddHTLC UpdateAddHTLC_clone(const struct LDKUpdateAddHTLC *NONNULL_PTR orig);
        public static native long UpdateAddHTLC_clone(long orig);
        // void UpdateFulfillHTLC_free(struct LDKUpdateFulfillHTLC this_obj);
@@ -3768,6 +4349,8 @@ public class bindings {
        public static native void UpdateFulfillHTLC_set_payment_preimage(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t htlc_id_arg, struct LDKThirtyTwoBytes payment_preimage_arg);
        public static native long UpdateFulfillHTLC_new(byte[] channel_id_arg, long htlc_id_arg, byte[] payment_preimage_arg);
+       // uint64_t UpdateFulfillHTLC_clone_ptr(LDKUpdateFulfillHTLC *NONNULL_PTR arg);
+       public static native long UpdateFulfillHTLC_clone_ptr(long arg);
        // struct LDKUpdateFulfillHTLC UpdateFulfillHTLC_clone(const struct LDKUpdateFulfillHTLC *NONNULL_PTR orig);
        public static native long UpdateFulfillHTLC_clone(long orig);
        // void UpdateFailHTLC_free(struct LDKUpdateFailHTLC this_obj);
@@ -3780,6 +4363,8 @@ public class bindings {
        public static native long UpdateFailHTLC_get_htlc_id(long this_ptr);
        // void UpdateFailHTLC_set_htlc_id(struct LDKUpdateFailHTLC *NONNULL_PTR this_ptr, uint64_t val);
        public static native void UpdateFailHTLC_set_htlc_id(long this_ptr, long val);
+       // uint64_t UpdateFailHTLC_clone_ptr(LDKUpdateFailHTLC *NONNULL_PTR arg);
+       public static native long UpdateFailHTLC_clone_ptr(long arg);
        // struct LDKUpdateFailHTLC UpdateFailHTLC_clone(const struct LDKUpdateFailHTLC *NONNULL_PTR orig);
        public static native long UpdateFailHTLC_clone(long orig);
        // void UpdateFailMalformedHTLC_free(struct LDKUpdateFailMalformedHTLC this_obj);
@@ -3796,6 +4381,8 @@ public class bindings {
        public static native short UpdateFailMalformedHTLC_get_failure_code(long this_ptr);
        // void UpdateFailMalformedHTLC_set_failure_code(struct LDKUpdateFailMalformedHTLC *NONNULL_PTR this_ptr, uint16_t val);
        public static native void UpdateFailMalformedHTLC_set_failure_code(long this_ptr, short val);
+       // uint64_t UpdateFailMalformedHTLC_clone_ptr(LDKUpdateFailMalformedHTLC *NONNULL_PTR arg);
+       public static native long UpdateFailMalformedHTLC_clone_ptr(long arg);
        // struct LDKUpdateFailMalformedHTLC UpdateFailMalformedHTLC_clone(const struct LDKUpdateFailMalformedHTLC *NONNULL_PTR orig);
        public static native long UpdateFailMalformedHTLC_clone(long orig);
        // void CommitmentSigned_free(struct LDKCommitmentSigned this_obj);
@@ -3812,6 +4399,8 @@ public class bindings {
        public static native void CommitmentSigned_set_htlc_signatures(long this_ptr, byte[][] val);
        // MUST_USE_RES struct LDKCommitmentSigned CommitmentSigned_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKSignature signature_arg, struct LDKCVec_SignatureZ htlc_signatures_arg);
        public static native long CommitmentSigned_new(byte[] channel_id_arg, byte[] signature_arg, byte[][] htlc_signatures_arg);
+       // uint64_t CommitmentSigned_clone_ptr(LDKCommitmentSigned *NONNULL_PTR arg);
+       public static native long CommitmentSigned_clone_ptr(long arg);
        // struct LDKCommitmentSigned CommitmentSigned_clone(const struct LDKCommitmentSigned *NONNULL_PTR orig);
        public static native long CommitmentSigned_clone(long orig);
        // void RevokeAndACK_free(struct LDKRevokeAndACK this_obj);
@@ -3830,6 +4419,8 @@ public class bindings {
        public static native void RevokeAndACK_set_next_per_commitment_point(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKRevokeAndACK RevokeAndACK_new(struct LDKThirtyTwoBytes channel_id_arg, struct LDKThirtyTwoBytes per_commitment_secret_arg, struct LDKPublicKey next_per_commitment_point_arg);
        public static native long RevokeAndACK_new(byte[] channel_id_arg, byte[] per_commitment_secret_arg, byte[] next_per_commitment_point_arg);
+       // uint64_t RevokeAndACK_clone_ptr(LDKRevokeAndACK *NONNULL_PTR arg);
+       public static native long RevokeAndACK_clone_ptr(long arg);
        // struct LDKRevokeAndACK RevokeAndACK_clone(const struct LDKRevokeAndACK *NONNULL_PTR orig);
        public static native long RevokeAndACK_clone(long orig);
        // void UpdateFee_free(struct LDKUpdateFee this_obj);
@@ -3844,6 +4435,8 @@ public class bindings {
        public static native void UpdateFee_set_feerate_per_kw(long this_ptr, int val);
        // MUST_USE_RES struct LDKUpdateFee UpdateFee_new(struct LDKThirtyTwoBytes channel_id_arg, uint32_t feerate_per_kw_arg);
        public static native long UpdateFee_new(byte[] channel_id_arg, int feerate_per_kw_arg);
+       // uint64_t UpdateFee_clone_ptr(LDKUpdateFee *NONNULL_PTR arg);
+       public static native long UpdateFee_clone_ptr(long arg);
        // struct LDKUpdateFee UpdateFee_clone(const struct LDKUpdateFee *NONNULL_PTR orig);
        public static native long UpdateFee_clone(long orig);
        // void DataLossProtect_free(struct LDKDataLossProtect this_obj);
@@ -3858,6 +4451,8 @@ public class bindings {
        public static native void DataLossProtect_set_my_current_per_commitment_point(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKDataLossProtect DataLossProtect_new(struct LDKThirtyTwoBytes your_last_per_commitment_secret_arg, struct LDKPublicKey my_current_per_commitment_point_arg);
        public static native long DataLossProtect_new(byte[] your_last_per_commitment_secret_arg, byte[] my_current_per_commitment_point_arg);
+       // uint64_t DataLossProtect_clone_ptr(LDKDataLossProtect *NONNULL_PTR arg);
+       public static native long DataLossProtect_clone_ptr(long arg);
        // struct LDKDataLossProtect DataLossProtect_clone(const struct LDKDataLossProtect *NONNULL_PTR orig);
        public static native long DataLossProtect_clone(long orig);
        // void ChannelReestablish_free(struct LDKChannelReestablish this_obj);
@@ -3874,6 +4469,8 @@ public class bindings {
        public static native long ChannelReestablish_get_next_remote_commitment_number(long this_ptr);
        // void ChannelReestablish_set_next_remote_commitment_number(struct LDKChannelReestablish *NONNULL_PTR this_ptr, uint64_t val);
        public static native void ChannelReestablish_set_next_remote_commitment_number(long this_ptr, long val);
+       // uint64_t ChannelReestablish_clone_ptr(LDKChannelReestablish *NONNULL_PTR arg);
+       public static native long ChannelReestablish_clone_ptr(long arg);
        // struct LDKChannelReestablish ChannelReestablish_clone(const struct LDKChannelReestablish *NONNULL_PTR orig);
        public static native long ChannelReestablish_clone(long orig);
        // void AnnouncementSignatures_free(struct LDKAnnouncementSignatures this_obj);
@@ -3896,10 +4493,14 @@ public class bindings {
        public static native void AnnouncementSignatures_set_bitcoin_signature(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKAnnouncementSignatures AnnouncementSignatures_new(struct LDKThirtyTwoBytes channel_id_arg, uint64_t short_channel_id_arg, struct LDKSignature node_signature_arg, struct LDKSignature bitcoin_signature_arg);
        public static native long AnnouncementSignatures_new(byte[] channel_id_arg, long short_channel_id_arg, byte[] node_signature_arg, byte[] bitcoin_signature_arg);
+       // uint64_t AnnouncementSignatures_clone_ptr(LDKAnnouncementSignatures *NONNULL_PTR arg);
+       public static native long AnnouncementSignatures_clone_ptr(long arg);
        // struct LDKAnnouncementSignatures AnnouncementSignatures_clone(const struct LDKAnnouncementSignatures *NONNULL_PTR orig);
        public static native long AnnouncementSignatures_clone(long orig);
        // void NetAddress_free(struct LDKNetAddress this_ptr);
        public static native void NetAddress_free(long this_ptr);
+       // uint64_t NetAddress_clone_ptr(LDKNetAddress *NONNULL_PTR arg);
+       public static native long NetAddress_clone_ptr(long arg);
        // struct LDKNetAddress NetAddress_clone(const struct LDKNetAddress *NONNULL_PTR orig);
        public static native long NetAddress_clone(long orig);
        // struct LDKNetAddress NetAddress_ipv4(struct LDKFourBytes addr, uint16_t port);
@@ -3938,6 +4539,8 @@ public class bindings {
        public static native void UnsignedNodeAnnouncement_set_alias(long this_ptr, byte[] val);
        // void UnsignedNodeAnnouncement_set_addresses(struct LDKUnsignedNodeAnnouncement *NONNULL_PTR this_ptr, struct LDKCVec_NetAddressZ val);
        public static native void UnsignedNodeAnnouncement_set_addresses(long this_ptr, long[] val);
+       // uint64_t UnsignedNodeAnnouncement_clone_ptr(LDKUnsignedNodeAnnouncement *NONNULL_PTR arg);
+       public static native long UnsignedNodeAnnouncement_clone_ptr(long arg);
        // struct LDKUnsignedNodeAnnouncement UnsignedNodeAnnouncement_clone(const struct LDKUnsignedNodeAnnouncement *NONNULL_PTR orig);
        public static native long UnsignedNodeAnnouncement_clone(long orig);
        // void NodeAnnouncement_free(struct LDKNodeAnnouncement this_obj);
@@ -3952,6 +4555,8 @@ public class bindings {
        public static native void NodeAnnouncement_set_contents(long this_ptr, long val);
        // MUST_USE_RES struct LDKNodeAnnouncement NodeAnnouncement_new(struct LDKSignature signature_arg, struct LDKUnsignedNodeAnnouncement contents_arg);
        public static native long NodeAnnouncement_new(byte[] signature_arg, long contents_arg);
+       // uint64_t NodeAnnouncement_clone_ptr(LDKNodeAnnouncement *NONNULL_PTR arg);
+       public static native long NodeAnnouncement_clone_ptr(long arg);
        // struct LDKNodeAnnouncement NodeAnnouncement_clone(const struct LDKNodeAnnouncement *NONNULL_PTR orig);
        public static native long NodeAnnouncement_clone(long orig);
        // void UnsignedChannelAnnouncement_free(struct LDKUnsignedChannelAnnouncement this_obj);
@@ -3984,6 +4589,8 @@ public class bindings {
        public static native byte[] UnsignedChannelAnnouncement_get_bitcoin_key_2(long this_ptr);
        // void UnsignedChannelAnnouncement_set_bitcoin_key_2(struct LDKUnsignedChannelAnnouncement *NONNULL_PTR this_ptr, struct LDKPublicKey val);
        public static native void UnsignedChannelAnnouncement_set_bitcoin_key_2(long this_ptr, byte[] val);
+       // uint64_t UnsignedChannelAnnouncement_clone_ptr(LDKUnsignedChannelAnnouncement *NONNULL_PTR arg);
+       public static native long UnsignedChannelAnnouncement_clone_ptr(long arg);
        // struct LDKUnsignedChannelAnnouncement UnsignedChannelAnnouncement_clone(const struct LDKUnsignedChannelAnnouncement *NONNULL_PTR orig);
        public static native long UnsignedChannelAnnouncement_clone(long orig);
        // void ChannelAnnouncement_free(struct LDKChannelAnnouncement this_obj);
@@ -4010,6 +4617,8 @@ public class bindings {
        public static native void ChannelAnnouncement_set_contents(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelAnnouncement ChannelAnnouncement_new(struct LDKSignature node_signature_1_arg, struct LDKSignature node_signature_2_arg, struct LDKSignature bitcoin_signature_1_arg, struct LDKSignature bitcoin_signature_2_arg, struct LDKUnsignedChannelAnnouncement contents_arg);
        public static native long ChannelAnnouncement_new(byte[] node_signature_1_arg, byte[] node_signature_2_arg, byte[] bitcoin_signature_1_arg, byte[] bitcoin_signature_2_arg, long contents_arg);
+       // uint64_t ChannelAnnouncement_clone_ptr(LDKChannelAnnouncement *NONNULL_PTR arg);
+       public static native long ChannelAnnouncement_clone_ptr(long arg);
        // struct LDKChannelAnnouncement ChannelAnnouncement_clone(const struct LDKChannelAnnouncement *NONNULL_PTR orig);
        public static native long ChannelAnnouncement_clone(long orig);
        // void UnsignedChannelUpdate_free(struct LDKUnsignedChannelUpdate this_obj);
@@ -4046,6 +4655,8 @@ public class bindings {
        public static native int UnsignedChannelUpdate_get_fee_proportional_millionths(long this_ptr);
        // void UnsignedChannelUpdate_set_fee_proportional_millionths(struct LDKUnsignedChannelUpdate *NONNULL_PTR this_ptr, uint32_t val);
        public static native void UnsignedChannelUpdate_set_fee_proportional_millionths(long this_ptr, int val);
+       // uint64_t UnsignedChannelUpdate_clone_ptr(LDKUnsignedChannelUpdate *NONNULL_PTR arg);
+       public static native long UnsignedChannelUpdate_clone_ptr(long arg);
        // struct LDKUnsignedChannelUpdate UnsignedChannelUpdate_clone(const struct LDKUnsignedChannelUpdate *NONNULL_PTR orig);
        public static native long UnsignedChannelUpdate_clone(long orig);
        // void ChannelUpdate_free(struct LDKChannelUpdate this_obj);
@@ -4060,6 +4671,8 @@ public class bindings {
        public static native void ChannelUpdate_set_contents(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelUpdate ChannelUpdate_new(struct LDKSignature signature_arg, struct LDKUnsignedChannelUpdate contents_arg);
        public static native long ChannelUpdate_new(byte[] signature_arg, long contents_arg);
+       // uint64_t ChannelUpdate_clone_ptr(LDKChannelUpdate *NONNULL_PTR arg);
+       public static native long ChannelUpdate_clone_ptr(long arg);
        // struct LDKChannelUpdate ChannelUpdate_clone(const struct LDKChannelUpdate *NONNULL_PTR orig);
        public static native long ChannelUpdate_clone(long orig);
        // void QueryChannelRange_free(struct LDKQueryChannelRange this_obj);
@@ -4078,6 +4691,8 @@ public class bindings {
        public static native void QueryChannelRange_set_number_of_blocks(long this_ptr, int val);
        // MUST_USE_RES struct LDKQueryChannelRange QueryChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg);
        public static native long QueryChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg);
+       // uint64_t QueryChannelRange_clone_ptr(LDKQueryChannelRange *NONNULL_PTR arg);
+       public static native long QueryChannelRange_clone_ptr(long arg);
        // struct LDKQueryChannelRange QueryChannelRange_clone(const struct LDKQueryChannelRange *NONNULL_PTR orig);
        public static native long QueryChannelRange_clone(long orig);
        // void ReplyChannelRange_free(struct LDKReplyChannelRange this_obj);
@@ -4102,6 +4717,8 @@ public class bindings {
        public static native void ReplyChannelRange_set_short_channel_ids(long this_ptr, long[] val);
        // MUST_USE_RES struct LDKReplyChannelRange ReplyChannelRange_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_blocknum_arg, uint32_t number_of_blocks_arg, bool sync_complete_arg, struct LDKCVec_u64Z short_channel_ids_arg);
        public static native long ReplyChannelRange_new(byte[] chain_hash_arg, int first_blocknum_arg, int number_of_blocks_arg, boolean sync_complete_arg, long[] short_channel_ids_arg);
+       // uint64_t ReplyChannelRange_clone_ptr(LDKReplyChannelRange *NONNULL_PTR arg);
+       public static native long ReplyChannelRange_clone_ptr(long arg);
        // struct LDKReplyChannelRange ReplyChannelRange_clone(const struct LDKReplyChannelRange *NONNULL_PTR orig);
        public static native long ReplyChannelRange_clone(long orig);
        // void QueryShortChannelIds_free(struct LDKQueryShortChannelIds this_obj);
@@ -4114,6 +4731,8 @@ public class bindings {
        public static native void QueryShortChannelIds_set_short_channel_ids(long this_ptr, long[] val);
        // MUST_USE_RES struct LDKQueryShortChannelIds QueryShortChannelIds_new(struct LDKThirtyTwoBytes chain_hash_arg, struct LDKCVec_u64Z short_channel_ids_arg);
        public static native long QueryShortChannelIds_new(byte[] chain_hash_arg, long[] short_channel_ids_arg);
+       // uint64_t QueryShortChannelIds_clone_ptr(LDKQueryShortChannelIds *NONNULL_PTR arg);
+       public static native long QueryShortChannelIds_clone_ptr(long arg);
        // struct LDKQueryShortChannelIds QueryShortChannelIds_clone(const struct LDKQueryShortChannelIds *NONNULL_PTR orig);
        public static native long QueryShortChannelIds_clone(long orig);
        // void ReplyShortChannelIdsEnd_free(struct LDKReplyShortChannelIdsEnd this_obj);
@@ -4128,6 +4747,8 @@ public class bindings {
        public static native void ReplyShortChannelIdsEnd_set_full_information(long this_ptr, boolean val);
        // MUST_USE_RES struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_new(struct LDKThirtyTwoBytes chain_hash_arg, bool full_information_arg);
        public static native long ReplyShortChannelIdsEnd_new(byte[] chain_hash_arg, boolean full_information_arg);
+       // uint64_t ReplyShortChannelIdsEnd_clone_ptr(LDKReplyShortChannelIdsEnd *NONNULL_PTR arg);
+       public static native long ReplyShortChannelIdsEnd_clone_ptr(long arg);
        // struct LDKReplyShortChannelIdsEnd ReplyShortChannelIdsEnd_clone(const struct LDKReplyShortChannelIdsEnd *NONNULL_PTR orig);
        public static native long ReplyShortChannelIdsEnd_clone(long orig);
        // void GossipTimestampFilter_free(struct LDKGossipTimestampFilter this_obj);
@@ -4146,10 +4767,14 @@ public class bindings {
        public static native void GossipTimestampFilter_set_timestamp_range(long this_ptr, int val);
        // MUST_USE_RES struct LDKGossipTimestampFilter GossipTimestampFilter_new(struct LDKThirtyTwoBytes chain_hash_arg, uint32_t first_timestamp_arg, uint32_t timestamp_range_arg);
        public static native long GossipTimestampFilter_new(byte[] chain_hash_arg, int first_timestamp_arg, int timestamp_range_arg);
+       // uint64_t GossipTimestampFilter_clone_ptr(LDKGossipTimestampFilter *NONNULL_PTR arg);
+       public static native long GossipTimestampFilter_clone_ptr(long arg);
        // struct LDKGossipTimestampFilter GossipTimestampFilter_clone(const struct LDKGossipTimestampFilter *NONNULL_PTR orig);
        public static native long GossipTimestampFilter_clone(long orig);
        // void ErrorAction_free(struct LDKErrorAction this_ptr);
        public static native void ErrorAction_free(long this_ptr);
+       // uint64_t ErrorAction_clone_ptr(LDKErrorAction *NONNULL_PTR arg);
+       public static native long ErrorAction_clone_ptr(long arg);
        // struct LDKErrorAction ErrorAction_clone(const struct LDKErrorAction *NONNULL_PTR orig);
        public static native long ErrorAction_clone(long orig);
        // struct LDKErrorAction ErrorAction_disconnect_peer(struct LDKErrorMessage msg);
@@ -4172,6 +4797,8 @@ public class bindings {
        public static native void LightningError_set_action(long this_ptr, long val);
        // MUST_USE_RES struct LDKLightningError LightningError_new(struct LDKStr err_arg, struct LDKErrorAction action_arg);
        public static native long LightningError_new(String err_arg, long action_arg);
+       // uint64_t LightningError_clone_ptr(LDKLightningError *NONNULL_PTR arg);
+       public static native long LightningError_clone_ptr(long arg);
        // struct LDKLightningError LightningError_clone(const struct LDKLightningError *NONNULL_PTR orig);
        public static native long LightningError_clone(long orig);
        // void CommitmentUpdate_free(struct LDKCommitmentUpdate this_obj);
@@ -4202,6 +4829,8 @@ public class bindings {
        public static native void CommitmentUpdate_set_commitment_signed(long this_ptr, long val);
        // MUST_USE_RES struct LDKCommitmentUpdate CommitmentUpdate_new(struct LDKCVec_UpdateAddHTLCZ update_add_htlcs_arg, struct LDKCVec_UpdateFulfillHTLCZ update_fulfill_htlcs_arg, struct LDKCVec_UpdateFailHTLCZ update_fail_htlcs_arg, struct LDKCVec_UpdateFailMalformedHTLCZ update_fail_malformed_htlcs_arg, struct LDKUpdateFee update_fee_arg, struct LDKCommitmentSigned commitment_signed_arg);
        public static native long CommitmentUpdate_new(long[] update_add_htlcs_arg, long[] update_fulfill_htlcs_arg, long[] update_fail_htlcs_arg, long[] update_fail_malformed_htlcs_arg, long update_fee_arg, long commitment_signed_arg);
+       // uint64_t CommitmentUpdate_clone_ptr(LDKCommitmentUpdate *NONNULL_PTR arg);
+       public static native long CommitmentUpdate_clone_ptr(long arg);
        // struct LDKCommitmentUpdate CommitmentUpdate_clone(const struct LDKCommitmentUpdate *NONNULL_PTR orig);
        public static native long CommitmentUpdate_clone(long orig);
        // void ChannelMessageHandler_free(struct LDKChannelMessageHandler this_ptr);
@@ -4372,6 +5001,8 @@ public class bindings {
        public static native void MessageHandler_set_route_handler(long this_ptr, long val);
        // MUST_USE_RES struct LDKMessageHandler MessageHandler_new(struct LDKChannelMessageHandler chan_handler_arg, struct LDKRoutingMessageHandler route_handler_arg);
        public static native long MessageHandler_new(long chan_handler_arg, long route_handler_arg);
+       // uint64_t SocketDescriptor_clone_ptr(LDKSocketDescriptor *NONNULL_PTR arg);
+       public static native long SocketDescriptor_clone_ptr(long arg);
        // struct LDKSocketDescriptor SocketDescriptor_clone(const struct LDKSocketDescriptor *NONNULL_PTR orig);
        public static native long SocketDescriptor_clone(long orig);
        // void SocketDescriptor_free(struct LDKSocketDescriptor this_ptr);
@@ -4384,6 +5015,8 @@ public class bindings {
        public static native void PeerHandleError_set_no_connection_possible(long this_ptr, boolean val);
        // MUST_USE_RES struct LDKPeerHandleError PeerHandleError_new(bool no_connection_possible_arg);
        public static native long PeerHandleError_new(boolean no_connection_possible_arg);
+       // uint64_t PeerHandleError_clone_ptr(LDKPeerHandleError *NONNULL_PTR arg);
+       public static native long PeerHandleError_clone_ptr(long arg);
        // struct LDKPeerHandleError PeerHandleError_clone(const struct LDKPeerHandleError *NONNULL_PTR orig);
        public static native long PeerHandleError_clone(long orig);
        // void PeerManager_free(struct LDKPeerManager this_obj);
@@ -4446,6 +5079,8 @@ public class bindings {
        public static native void TxCreationKeys_set_broadcaster_delayed_payment_key(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKTxCreationKeys TxCreationKeys_new(struct LDKPublicKey per_commitment_point_arg, struct LDKPublicKey revocation_key_arg, struct LDKPublicKey broadcaster_htlc_key_arg, struct LDKPublicKey countersignatory_htlc_key_arg, struct LDKPublicKey broadcaster_delayed_payment_key_arg);
        public static native long TxCreationKeys_new(byte[] per_commitment_point_arg, byte[] revocation_key_arg, byte[] broadcaster_htlc_key_arg, byte[] countersignatory_htlc_key_arg, byte[] broadcaster_delayed_payment_key_arg);
+       // uint64_t TxCreationKeys_clone_ptr(LDKTxCreationKeys *NONNULL_PTR arg);
+       public static native long TxCreationKeys_clone_ptr(long arg);
        // struct LDKTxCreationKeys TxCreationKeys_clone(const struct LDKTxCreationKeys *NONNULL_PTR orig);
        public static native long TxCreationKeys_clone(long orig);
        // struct LDKCVec_u8Z TxCreationKeys_write(const struct LDKTxCreationKeys *NONNULL_PTR obj);
@@ -4476,6 +5111,8 @@ public class bindings {
        public static native void ChannelPublicKeys_set_htlc_basepoint(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKChannelPublicKeys ChannelPublicKeys_new(struct LDKPublicKey funding_pubkey_arg, struct LDKPublicKey revocation_basepoint_arg, struct LDKPublicKey payment_point_arg, struct LDKPublicKey delayed_payment_basepoint_arg, struct LDKPublicKey htlc_basepoint_arg);
        public static native long ChannelPublicKeys_new(byte[] funding_pubkey_arg, byte[] revocation_basepoint_arg, byte[] payment_point_arg, byte[] delayed_payment_basepoint_arg, byte[] htlc_basepoint_arg);
+       // uint64_t ChannelPublicKeys_clone_ptr(LDKChannelPublicKeys *NONNULL_PTR arg);
+       public static native long ChannelPublicKeys_clone_ptr(long arg);
        // struct LDKChannelPublicKeys ChannelPublicKeys_clone(const struct LDKChannelPublicKeys *NONNULL_PTR orig);
        public static native long ChannelPublicKeys_clone(long orig);
        // struct LDKCVec_u8Z ChannelPublicKeys_write(const struct LDKChannelPublicKeys *NONNULL_PTR obj);
@@ -4512,6 +5149,8 @@ public class bindings {
        public static native void HTLCOutputInCommitment_set_transaction_output_index(long this_ptr, long val);
        // MUST_USE_RES struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_new(bool offered_arg, uint64_t amount_msat_arg, uint32_t cltv_expiry_arg, struct LDKThirtyTwoBytes payment_hash_arg, struct LDKCOption_u32Z transaction_output_index_arg);
        public static native long HTLCOutputInCommitment_new(boolean offered_arg, long amount_msat_arg, int cltv_expiry_arg, byte[] payment_hash_arg, long transaction_output_index_arg);
+       // uint64_t HTLCOutputInCommitment_clone_ptr(LDKHTLCOutputInCommitment *NONNULL_PTR arg);
+       public static native long HTLCOutputInCommitment_clone_ptr(long arg);
        // struct LDKHTLCOutputInCommitment HTLCOutputInCommitment_clone(const struct LDKHTLCOutputInCommitment *NONNULL_PTR orig);
        public static native long HTLCOutputInCommitment_clone(long orig);
        // struct LDKCVec_u8Z HTLCOutputInCommitment_write(const struct LDKHTLCOutputInCommitment *NONNULL_PTR obj);
@@ -4548,6 +5187,8 @@ public class bindings {
        public static native void ChannelTransactionParameters_set_funding_outpoint(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelTransactionParameters ChannelTransactionParameters_new(struct LDKChannelPublicKeys holder_pubkeys_arg, uint16_t holder_selected_contest_delay_arg, bool is_outbound_from_holder_arg, struct LDKCounterpartyChannelTransactionParameters counterparty_parameters_arg, struct LDKOutPoint funding_outpoint_arg);
        public static native long ChannelTransactionParameters_new(long holder_pubkeys_arg, short holder_selected_contest_delay_arg, boolean is_outbound_from_holder_arg, long counterparty_parameters_arg, long funding_outpoint_arg);
+       // uint64_t ChannelTransactionParameters_clone_ptr(LDKChannelTransactionParameters *NONNULL_PTR arg);
+       public static native long ChannelTransactionParameters_clone_ptr(long arg);
        // struct LDKChannelTransactionParameters ChannelTransactionParameters_clone(const struct LDKChannelTransactionParameters *NONNULL_PTR orig);
        public static native long ChannelTransactionParameters_clone(long orig);
        // void CounterpartyChannelTransactionParameters_free(struct LDKCounterpartyChannelTransactionParameters this_obj);
@@ -4562,6 +5203,8 @@ public class bindings {
        public static native void CounterpartyChannelTransactionParameters_set_selected_contest_delay(long this_ptr, short val);
        // MUST_USE_RES struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_new(struct LDKChannelPublicKeys pubkeys_arg, uint16_t selected_contest_delay_arg);
        public static native long CounterpartyChannelTransactionParameters_new(long pubkeys_arg, short selected_contest_delay_arg);
+       // uint64_t CounterpartyChannelTransactionParameters_clone_ptr(LDKCounterpartyChannelTransactionParameters *NONNULL_PTR arg);
+       public static native long CounterpartyChannelTransactionParameters_clone_ptr(long arg);
        // struct LDKCounterpartyChannelTransactionParameters CounterpartyChannelTransactionParameters_clone(const struct LDKCounterpartyChannelTransactionParameters *NONNULL_PTR orig);
        public static native long CounterpartyChannelTransactionParameters_clone(long orig);
        // MUST_USE_RES bool ChannelTransactionParameters_is_populated(const struct LDKChannelTransactionParameters *NONNULL_PTR this_arg);
@@ -4598,6 +5241,8 @@ public class bindings {
        public static native void HolderCommitmentTransaction_set_counterparty_sig(long this_ptr, byte[] val);
        // void HolderCommitmentTransaction_set_counterparty_htlc_sigs(struct LDKHolderCommitmentTransaction *NONNULL_PTR this_ptr, struct LDKCVec_SignatureZ val);
        public static native void HolderCommitmentTransaction_set_counterparty_htlc_sigs(long this_ptr, byte[][] val);
+       // uint64_t HolderCommitmentTransaction_clone_ptr(LDKHolderCommitmentTransaction *NONNULL_PTR arg);
+       public static native long HolderCommitmentTransaction_clone_ptr(long arg);
        // struct LDKHolderCommitmentTransaction HolderCommitmentTransaction_clone(const struct LDKHolderCommitmentTransaction *NONNULL_PTR orig);
        public static native long HolderCommitmentTransaction_clone(long orig);
        // struct LDKCVec_u8Z HolderCommitmentTransaction_write(const struct LDKHolderCommitmentTransaction *NONNULL_PTR obj);
@@ -4618,6 +5263,8 @@ public class bindings {
        public static native void BuiltCommitmentTransaction_set_txid(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_new(struct LDKTransaction transaction_arg, struct LDKThirtyTwoBytes txid_arg);
        public static native long BuiltCommitmentTransaction_new(byte[] transaction_arg, byte[] txid_arg);
+       // uint64_t BuiltCommitmentTransaction_clone_ptr(LDKBuiltCommitmentTransaction *NONNULL_PTR arg);
+       public static native long BuiltCommitmentTransaction_clone_ptr(long arg);
        // struct LDKBuiltCommitmentTransaction BuiltCommitmentTransaction_clone(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR orig);
        public static native long BuiltCommitmentTransaction_clone(long orig);
        // struct LDKCVec_u8Z BuiltCommitmentTransaction_write(const struct LDKBuiltCommitmentTransaction *NONNULL_PTR obj);
@@ -4630,6 +5277,8 @@ public class bindings {
        public static native byte[] BuiltCommitmentTransaction_sign(long this_arg, byte[] funding_key, byte[] funding_redeemscript, long channel_value_satoshis);
        // void ClosingTransaction_free(struct LDKClosingTransaction this_obj);
        public static native void ClosingTransaction_free(long this_obj);
+       // uint64_t ClosingTransaction_clone_ptr(LDKClosingTransaction *NONNULL_PTR arg);
+       public static native long ClosingTransaction_clone_ptr(long arg);
        // struct LDKClosingTransaction ClosingTransaction_clone(const struct LDKClosingTransaction *NONNULL_PTR orig);
        public static native long ClosingTransaction_clone(long orig);
        // uint64_t ClosingTransaction_hash(const struct LDKClosingTransaction *NONNULL_PTR o);
@@ -4658,6 +5307,8 @@ public class bindings {
        public static native byte[] TrustedClosingTransaction_sign(long this_arg, byte[] funding_key, byte[] funding_redeemscript, long channel_value_satoshis);
        // void CommitmentTransaction_free(struct LDKCommitmentTransaction this_obj);
        public static native void CommitmentTransaction_free(long this_obj);
+       // uint64_t CommitmentTransaction_clone_ptr(LDKCommitmentTransaction *NONNULL_PTR arg);
+       public static native long CommitmentTransaction_clone_ptr(long arg);
        // struct LDKCommitmentTransaction CommitmentTransaction_clone(const struct LDKCommitmentTransaction *NONNULL_PTR orig);
        public static native long CommitmentTransaction_clone(long orig);
        // struct LDKCVec_u8Z CommitmentTransaction_write(const struct LDKCommitmentTransaction *NONNULL_PTR obj);
@@ -4696,12 +5347,20 @@ public class bindings {
        public static native boolean ChannelFeatures_eq(long a, long b);
        // bool InvoiceFeatures_eq(const struct LDKInvoiceFeatures *NONNULL_PTR a, const struct LDKInvoiceFeatures *NONNULL_PTR b);
        public static native boolean InvoiceFeatures_eq(long a, long b);
+       // uint64_t InitFeatures_clone_ptr(LDKInitFeatures *NONNULL_PTR arg);
+       public static native long InitFeatures_clone_ptr(long arg);
        // struct LDKInitFeatures InitFeatures_clone(const struct LDKInitFeatures *NONNULL_PTR orig);
        public static native long InitFeatures_clone(long orig);
+       // uint64_t NodeFeatures_clone_ptr(LDKNodeFeatures *NONNULL_PTR arg);
+       public static native long NodeFeatures_clone_ptr(long arg);
        // struct LDKNodeFeatures NodeFeatures_clone(const struct LDKNodeFeatures *NONNULL_PTR orig);
        public static native long NodeFeatures_clone(long orig);
+       // uint64_t ChannelFeatures_clone_ptr(LDKChannelFeatures *NONNULL_PTR arg);
+       public static native long ChannelFeatures_clone_ptr(long arg);
        // struct LDKChannelFeatures ChannelFeatures_clone(const struct LDKChannelFeatures *NONNULL_PTR orig);
        public static native long ChannelFeatures_clone(long orig);
+       // uint64_t InvoiceFeatures_clone_ptr(LDKInvoiceFeatures *NONNULL_PTR arg);
+       public static native long InvoiceFeatures_clone_ptr(long arg);
        // struct LDKInvoiceFeatures InvoiceFeatures_clone(const struct LDKInvoiceFeatures *NONNULL_PTR orig);
        public static native long InvoiceFeatures_clone(long orig);
        // void InitFeatures_free(struct LDKInitFeatures this_obj);
@@ -4760,6 +5419,8 @@ public class bindings {
        public static native long InvoiceFeatures_read(byte[] ser);
        // void ShutdownScript_free(struct LDKShutdownScript this_obj);
        public static native void ShutdownScript_free(long this_obj);
+       // uint64_t ShutdownScript_clone_ptr(LDKShutdownScript *NONNULL_PTR arg);
+       public static native long ShutdownScript_clone_ptr(long arg);
        // struct LDKShutdownScript ShutdownScript_clone(const struct LDKShutdownScript *NONNULL_PTR orig);
        public static native long ShutdownScript_clone(long orig);
        // void InvalidShutdownScript_free(struct LDKInvalidShutdownScript this_obj);
@@ -4770,6 +5431,8 @@ public class bindings {
        public static native void InvalidShutdownScript_set_script(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKInvalidShutdownScript InvalidShutdownScript_new(struct LDKCVec_u8Z script_arg);
        public static native long InvalidShutdownScript_new(byte[] script_arg);
+       // uint64_t InvalidShutdownScript_clone_ptr(LDKInvalidShutdownScript *NONNULL_PTR arg);
+       public static native long InvalidShutdownScript_clone_ptr(long arg);
        // struct LDKInvalidShutdownScript InvalidShutdownScript_clone(const struct LDKInvalidShutdownScript *NONNULL_PTR orig);
        public static native long InvalidShutdownScript_clone(long orig);
        // struct LDKCVec_u8Z ShutdownScript_write(const struct LDKShutdownScript *NONNULL_PTR obj);
@@ -4790,6 +5453,8 @@ public class bindings {
        public static native boolean ShutdownScript_is_compatible(long this_arg, long features);
        // void CustomMessageReader_free(struct LDKCustomMessageReader this_ptr);
        public static native void CustomMessageReader_free(long this_ptr);
+       // uint64_t Type_clone_ptr(LDKType *NONNULL_PTR arg);
+       public static native long Type_clone_ptr(long arg);
        // struct LDKType Type_clone(const struct LDKType *NONNULL_PTR orig);
        public static native long Type_clone(long orig);
        // void Type_free(struct LDKType this_ptr);
@@ -4804,6 +5469,8 @@ public class bindings {
        public static native byte[] LockableScore_write(long obj);
        // void NodeId_free(struct LDKNodeId this_obj);
        public static native void NodeId_free(long this_obj);
+       // uint64_t NodeId_clone_ptr(LDKNodeId *NONNULL_PTR arg);
+       public static native long NodeId_clone_ptr(long arg);
        // struct LDKNodeId NodeId_clone(const struct LDKNodeId *NONNULL_PTR orig);
        public static native long NodeId_clone(long orig);
        // MUST_USE_RES struct LDKNodeId NodeId_from_pubkey(struct LDKPublicKey pubkey);
@@ -4818,12 +5485,16 @@ public class bindings {
        public static native long NodeId_read(byte[] ser);
        // void NetworkGraph_free(struct LDKNetworkGraph this_obj);
        public static native void NetworkGraph_free(long this_obj);
+       // uint64_t NetworkGraph_clone_ptr(LDKNetworkGraph *NONNULL_PTR arg);
+       public static native long NetworkGraph_clone_ptr(long arg);
        // struct LDKNetworkGraph NetworkGraph_clone(const struct LDKNetworkGraph *NONNULL_PTR orig);
        public static native long NetworkGraph_clone(long orig);
        // void ReadOnlyNetworkGraph_free(struct LDKReadOnlyNetworkGraph this_obj);
        public static native void ReadOnlyNetworkGraph_free(long this_obj);
        // void NetworkUpdate_free(struct LDKNetworkUpdate this_ptr);
        public static native void NetworkUpdate_free(long this_ptr);
+       // uint64_t NetworkUpdate_clone_ptr(LDKNetworkUpdate *NONNULL_PTR arg);
+       public static native long NetworkUpdate_clone_ptr(long arg);
        // struct LDKNetworkUpdate NetworkUpdate_clone(const struct LDKNetworkUpdate *NONNULL_PTR orig);
        public static native long NetworkUpdate_clone(long orig);
        // struct LDKNetworkUpdate NetworkUpdate_channel_update_message(struct LDKChannelUpdate msg);
@@ -4834,6 +5505,8 @@ public class bindings {
        public static native long NetworkUpdate_node_failure(byte[] node_id, boolean is_permanent);
        // struct LDKCVec_u8Z NetworkUpdate_write(const struct LDKNetworkUpdate *NONNULL_PTR obj);
        public static native byte[] NetworkUpdate_write(long obj);
+       // struct LDKCResult_COption_NetworkUpdateZDecodeErrorZ NetworkUpdate_read(struct LDKu8slice ser);
+       public static native long NetworkUpdate_read(byte[] ser);
        // struct LDKEventHandler NetGraphMsgHandler_as_EventHandler(const struct LDKNetGraphMsgHandler *NONNULL_PTR this_arg);
        public static native long NetGraphMsgHandler_as_EventHandler(long this_arg);
        // void NetGraphMsgHandler_free(struct LDKNetGraphMsgHandler this_obj);
@@ -4878,6 +5551,8 @@ public class bindings {
        public static native void DirectionalChannelInfo_set_last_update_message(long this_ptr, long val);
        // MUST_USE_RES struct LDKDirectionalChannelInfo DirectionalChannelInfo_new(uint32_t last_update_arg, bool enabled_arg, uint16_t cltv_expiry_delta_arg, uint64_t htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg, struct LDKRoutingFees fees_arg, struct LDKChannelUpdate last_update_message_arg);
        public static native long DirectionalChannelInfo_new(int last_update_arg, boolean enabled_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg, long htlc_maximum_msat_arg, long fees_arg, long last_update_message_arg);
+       // uint64_t DirectionalChannelInfo_clone_ptr(LDKDirectionalChannelInfo *NONNULL_PTR arg);
+       public static native long DirectionalChannelInfo_clone_ptr(long arg);
        // struct LDKDirectionalChannelInfo DirectionalChannelInfo_clone(const struct LDKDirectionalChannelInfo *NONNULL_PTR orig);
        public static native long DirectionalChannelInfo_clone(long orig);
        // struct LDKCVec_u8Z DirectionalChannelInfo_write(const struct LDKDirectionalChannelInfo *NONNULL_PTR obj);
@@ -4916,6 +5591,8 @@ public class bindings {
        public static native void ChannelInfo_set_announcement_message(long this_ptr, long val);
        // MUST_USE_RES struct LDKChannelInfo ChannelInfo_new(struct LDKChannelFeatures features_arg, struct LDKNodeId node_one_arg, struct LDKDirectionalChannelInfo one_to_two_arg, struct LDKNodeId node_two_arg, struct LDKDirectionalChannelInfo two_to_one_arg, struct LDKCOption_u64Z capacity_sats_arg, struct LDKChannelAnnouncement announcement_message_arg);
        public static native long ChannelInfo_new(long features_arg, long node_one_arg, long one_to_two_arg, long node_two_arg, long two_to_one_arg, long capacity_sats_arg, long announcement_message_arg);
+       // uint64_t ChannelInfo_clone_ptr(LDKChannelInfo *NONNULL_PTR arg);
+       public static native long ChannelInfo_clone_ptr(long arg);
        // struct LDKChannelInfo ChannelInfo_clone(const struct LDKChannelInfo *NONNULL_PTR orig);
        public static native long ChannelInfo_clone(long orig);
        // struct LDKCVec_u8Z ChannelInfo_write(const struct LDKChannelInfo *NONNULL_PTR obj);
@@ -4936,6 +5613,8 @@ public class bindings {
        public static native long RoutingFees_new(int base_msat_arg, int proportional_millionths_arg);
        // bool RoutingFees_eq(const struct LDKRoutingFees *NONNULL_PTR a, const struct LDKRoutingFees *NONNULL_PTR b);
        public static native boolean RoutingFees_eq(long a, long b);
+       // uint64_t RoutingFees_clone_ptr(LDKRoutingFees *NONNULL_PTR arg);
+       public static native long RoutingFees_clone_ptr(long arg);
        // struct LDKRoutingFees RoutingFees_clone(const struct LDKRoutingFees *NONNULL_PTR orig);
        public static native long RoutingFees_clone(long orig);
        // uint64_t RoutingFees_hash(const struct LDKRoutingFees *NONNULL_PTR o);
@@ -4970,6 +5649,8 @@ public class bindings {
        public static native void NodeAnnouncementInfo_set_announcement_message(long this_ptr, long val);
        // MUST_USE_RES struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_new(struct LDKNodeFeatures features_arg, uint32_t last_update_arg, struct LDKThreeBytes rgb_arg, struct LDKThirtyTwoBytes alias_arg, struct LDKCVec_NetAddressZ addresses_arg, struct LDKNodeAnnouncement announcement_message_arg);
        public static native long NodeAnnouncementInfo_new(long features_arg, int last_update_arg, byte[] rgb_arg, byte[] alias_arg, long[] addresses_arg, long announcement_message_arg);
+       // uint64_t NodeAnnouncementInfo_clone_ptr(LDKNodeAnnouncementInfo *NONNULL_PTR arg);
+       public static native long NodeAnnouncementInfo_clone_ptr(long arg);
        // struct LDKNodeAnnouncementInfo NodeAnnouncementInfo_clone(const struct LDKNodeAnnouncementInfo *NONNULL_PTR orig);
        public static native long NodeAnnouncementInfo_clone(long orig);
        // struct LDKCVec_u8Z NodeAnnouncementInfo_write(const struct LDKNodeAnnouncementInfo *NONNULL_PTR obj);
@@ -4990,6 +5671,8 @@ public class bindings {
        public static native void NodeInfo_set_announcement_info(long this_ptr, long val);
        // MUST_USE_RES struct LDKNodeInfo NodeInfo_new(struct LDKCVec_u64Z channels_arg, struct LDKRoutingFees lowest_inbound_channel_fees_arg, struct LDKNodeAnnouncementInfo announcement_info_arg);
        public static native long NodeInfo_new(long[] channels_arg, long lowest_inbound_channel_fees_arg, long announcement_info_arg);
+       // uint64_t NodeInfo_clone_ptr(LDKNodeInfo *NONNULL_PTR arg);
+       public static native long NodeInfo_clone_ptr(long arg);
        // struct LDKNodeInfo NodeInfo_clone(const struct LDKNodeInfo *NONNULL_PTR orig);
        public static native long NodeInfo_clone(long orig);
        // struct LDKCVec_u8Z NodeInfo_write(const struct LDKNodeInfo *NONNULL_PTR obj);
@@ -5050,6 +5733,8 @@ public class bindings {
        public static native void RouteHop_set_cltv_expiry_delta(long this_ptr, int val);
        // MUST_USE_RES struct LDKRouteHop RouteHop_new(struct LDKPublicKey pubkey_arg, struct LDKNodeFeatures node_features_arg, uint64_t short_channel_id_arg, struct LDKChannelFeatures channel_features_arg, uint64_t fee_msat_arg, uint32_t cltv_expiry_delta_arg);
        public static native long RouteHop_new(byte[] pubkey_arg, long node_features_arg, long short_channel_id_arg, long channel_features_arg, long fee_msat_arg, int cltv_expiry_delta_arg);
+       // uint64_t RouteHop_clone_ptr(LDKRouteHop *NONNULL_PTR arg);
+       public static native long RouteHop_clone_ptr(long arg);
        // struct LDKRouteHop RouteHop_clone(const struct LDKRouteHop *NONNULL_PTR orig);
        public static native long RouteHop_clone(long orig);
        // uint64_t RouteHop_hash(const struct LDKRouteHop *NONNULL_PTR o);
@@ -5072,6 +5757,8 @@ public class bindings {
        public static native void Route_set_payee(long this_ptr, long val);
        // MUST_USE_RES struct LDKRoute Route_new(struct LDKCVec_CVec_RouteHopZZ paths_arg, struct LDKPayee payee_arg);
        public static native long Route_new(long[][] paths_arg, long payee_arg);
+       // uint64_t Route_clone_ptr(LDKRoute *NONNULL_PTR arg);
+       public static native long Route_clone_ptr(long arg);
        // struct LDKRoute Route_clone(const struct LDKRoute *NONNULL_PTR orig);
        public static native long Route_clone(long orig);
        // uint64_t Route_hash(const struct LDKRoute *NONNULL_PTR o);
@@ -5102,6 +5789,8 @@ public class bindings {
        public static native void RouteParameters_set_final_cltv_expiry_delta(long this_ptr, int val);
        // MUST_USE_RES struct LDKRouteParameters RouteParameters_new(struct LDKPayee payee_arg, uint64_t final_value_msat_arg, uint32_t final_cltv_expiry_delta_arg);
        public static native long RouteParameters_new(long payee_arg, long final_value_msat_arg, int final_cltv_expiry_delta_arg);
+       // uint64_t RouteParameters_clone_ptr(LDKRouteParameters *NONNULL_PTR arg);
+       public static native long RouteParameters_clone_ptr(long arg);
        // struct LDKRouteParameters RouteParameters_clone(const struct LDKRouteParameters *NONNULL_PTR orig);
        public static native long RouteParameters_clone(long orig);
        // struct LDKCVec_u8Z RouteParameters_write(const struct LDKRouteParameters *NONNULL_PTR obj);
@@ -5128,6 +5817,8 @@ public class bindings {
        public static native void Payee_set_expiry_time(long this_ptr, long val);
        // MUST_USE_RES struct LDKPayee Payee_new(struct LDKPublicKey pubkey_arg, struct LDKInvoiceFeatures features_arg, struct LDKCVec_RouteHintZ route_hints_arg, struct LDKCOption_u64Z expiry_time_arg);
        public static native long Payee_new(byte[] pubkey_arg, long features_arg, long[] route_hints_arg, long expiry_time_arg);
+       // uint64_t Payee_clone_ptr(LDKPayee *NONNULL_PTR arg);
+       public static native long Payee_clone_ptr(long arg);
        // struct LDKPayee Payee_clone(const struct LDKPayee *NONNULL_PTR orig);
        public static native long Payee_clone(long orig);
        // uint64_t Payee_hash(const struct LDKPayee *NONNULL_PTR o);
@@ -5150,6 +5841,8 @@ public class bindings {
        public static native void RouteHint_set_a(long this_ptr, long[] val);
        // MUST_USE_RES struct LDKRouteHint RouteHint_new(struct LDKCVec_RouteHintHopZ a_arg);
        public static native long RouteHint_new(long[] a_arg);
+       // uint64_t RouteHint_clone_ptr(LDKRouteHint *NONNULL_PTR arg);
+       public static native long RouteHint_clone_ptr(long arg);
        // struct LDKRouteHint RouteHint_clone(const struct LDKRouteHint *NONNULL_PTR orig);
        public static native long RouteHint_clone(long orig);
        // uint64_t RouteHint_hash(const struct LDKRouteHint *NONNULL_PTR o);
@@ -5188,6 +5881,8 @@ public class bindings {
        public static native void RouteHintHop_set_htlc_maximum_msat(long this_ptr, long val);
        // MUST_USE_RES struct LDKRouteHintHop RouteHintHop_new(struct LDKPublicKey src_node_id_arg, uint64_t short_channel_id_arg, struct LDKRoutingFees fees_arg, uint16_t cltv_expiry_delta_arg, struct LDKCOption_u64Z htlc_minimum_msat_arg, struct LDKCOption_u64Z htlc_maximum_msat_arg);
        public static native long RouteHintHop_new(byte[] src_node_id_arg, long short_channel_id_arg, long fees_arg, short cltv_expiry_delta_arg, long htlc_minimum_msat_arg, long htlc_maximum_msat_arg);
+       // uint64_t RouteHintHop_clone_ptr(LDKRouteHintHop *NONNULL_PTR arg);
+       public static native long RouteHintHop_clone_ptr(long arg);
        // struct LDKRouteHintHop RouteHintHop_clone(const struct LDKRouteHintHop *NONNULL_PTR orig);
        public static native long RouteHintHop_clone(long orig);
        // uint64_t RouteHintHop_hash(const struct LDKRouteHintHop *NONNULL_PTR o);
@@ -5262,12 +5957,16 @@ public class bindings {
        public static native void Invoice_free(long this_obj);
        // bool Invoice_eq(const struct LDKInvoice *NONNULL_PTR a, const struct LDKInvoice *NONNULL_PTR b);
        public static native boolean Invoice_eq(long a, long b);
+       // uint64_t Invoice_clone_ptr(LDKInvoice *NONNULL_PTR arg);
+       public static native long Invoice_clone_ptr(long arg);
        // struct LDKInvoice Invoice_clone(const struct LDKInvoice *NONNULL_PTR orig);
        public static native long Invoice_clone(long orig);
        // void SignedRawInvoice_free(struct LDKSignedRawInvoice this_obj);
        public static native void SignedRawInvoice_free(long this_obj);
        // bool SignedRawInvoice_eq(const struct LDKSignedRawInvoice *NONNULL_PTR a, const struct LDKSignedRawInvoice *NONNULL_PTR b);
        public static native boolean SignedRawInvoice_eq(long a, long b);
+       // uint64_t SignedRawInvoice_clone_ptr(LDKSignedRawInvoice *NONNULL_PTR arg);
+       public static native long SignedRawInvoice_clone_ptr(long arg);
        // struct LDKSignedRawInvoice SignedRawInvoice_clone(const struct LDKSignedRawInvoice *NONNULL_PTR orig);
        public static native long SignedRawInvoice_clone(long orig);
        // void RawInvoice_free(struct LDKRawInvoice this_obj);
@@ -5278,6 +5977,8 @@ public class bindings {
        public static native void RawInvoice_set_data(long this_ptr, long val);
        // bool RawInvoice_eq(const struct LDKRawInvoice *NONNULL_PTR a, const struct LDKRawInvoice *NONNULL_PTR b);
        public static native boolean RawInvoice_eq(long a, long b);
+       // uint64_t RawInvoice_clone_ptr(LDKRawInvoice *NONNULL_PTR arg);
+       public static native long RawInvoice_clone_ptr(long arg);
        // struct LDKRawInvoice RawInvoice_clone(const struct LDKRawInvoice *NONNULL_PTR orig);
        public static native long RawInvoice_clone(long orig);
        // void RawDataPart_free(struct LDKRawDataPart this_obj);
@@ -5288,12 +5989,16 @@ public class bindings {
        public static native void RawDataPart_set_timestamp(long this_ptr, long val);
        // bool RawDataPart_eq(const struct LDKRawDataPart *NONNULL_PTR a, const struct LDKRawDataPart *NONNULL_PTR b);
        public static native boolean RawDataPart_eq(long a, long b);
+       // uint64_t RawDataPart_clone_ptr(LDKRawDataPart *NONNULL_PTR arg);
+       public static native long RawDataPart_clone_ptr(long arg);
        // struct LDKRawDataPart RawDataPart_clone(const struct LDKRawDataPart *NONNULL_PTR orig);
        public static native long RawDataPart_clone(long orig);
        // void PositiveTimestamp_free(struct LDKPositiveTimestamp this_obj);
        public static native void PositiveTimestamp_free(long this_obj);
        // bool PositiveTimestamp_eq(const struct LDKPositiveTimestamp *NONNULL_PTR a, const struct LDKPositiveTimestamp *NONNULL_PTR b);
        public static native boolean PositiveTimestamp_eq(long a, long b);
+       // uint64_t PositiveTimestamp_clone_ptr(LDKPositiveTimestamp *NONNULL_PTR arg);
+       public static native long PositiveTimestamp_clone_ptr(long arg);
        // struct LDKPositiveTimestamp PositiveTimestamp_clone(const struct LDKPositiveTimestamp *NONNULL_PTR orig);
        public static native long PositiveTimestamp_clone(long orig);
        // enum LDKSiPrefix SiPrefix_clone(const enum LDKSiPrefix *NONNULL_PTR orig);
@@ -5328,6 +6033,8 @@ public class bindings {
        public static native boolean Currency_eq(long a, long b);
        // void Sha256_free(struct LDKSha256 this_obj);
        public static native void Sha256_free(long this_obj);
+       // uint64_t Sha256_clone_ptr(LDKSha256 *NONNULL_PTR arg);
+       public static native long Sha256_clone_ptr(long arg);
        // struct LDKSha256 Sha256_clone(const struct LDKSha256 *NONNULL_PTR orig);
        public static native long Sha256_clone(long orig);
        // uint64_t Sha256_hash(const struct LDKSha256 *NONNULL_PTR o);
@@ -5336,6 +6043,8 @@ public class bindings {
        public static native boolean Sha256_eq(long a, long b);
        // void Description_free(struct LDKDescription this_obj);
        public static native void Description_free(long this_obj);
+       // uint64_t Description_clone_ptr(LDKDescription *NONNULL_PTR arg);
+       public static native long Description_clone_ptr(long arg);
        // struct LDKDescription Description_clone(const struct LDKDescription *NONNULL_PTR orig);
        public static native long Description_clone(long orig);
        // uint64_t Description_hash(const struct LDKDescription *NONNULL_PTR o);
@@ -5350,6 +6059,8 @@ public class bindings {
        public static native void PayeePubKey_set_a(long this_ptr, byte[] val);
        // MUST_USE_RES struct LDKPayeePubKey PayeePubKey_new(struct LDKPublicKey a_arg);
        public static native long PayeePubKey_new(byte[] a_arg);
+       // uint64_t PayeePubKey_clone_ptr(LDKPayeePubKey *NONNULL_PTR arg);
+       public static native long PayeePubKey_clone_ptr(long arg);
        // struct LDKPayeePubKey PayeePubKey_clone(const struct LDKPayeePubKey *NONNULL_PTR orig);
        public static native long PayeePubKey_clone(long orig);
        // uint64_t PayeePubKey_hash(const struct LDKPayeePubKey *NONNULL_PTR o);
@@ -5358,6 +6069,8 @@ public class bindings {
        public static native boolean PayeePubKey_eq(long a, long b);
        // void ExpiryTime_free(struct LDKExpiryTime this_obj);
        public static native void ExpiryTime_free(long this_obj);
+       // uint64_t ExpiryTime_clone_ptr(LDKExpiryTime *NONNULL_PTR arg);
+       public static native long ExpiryTime_clone_ptr(long arg);
        // struct LDKExpiryTime ExpiryTime_clone(const struct LDKExpiryTime *NONNULL_PTR orig);
        public static native long ExpiryTime_clone(long orig);
        // uint64_t ExpiryTime_hash(const struct LDKExpiryTime *NONNULL_PTR o);
@@ -5372,6 +6085,8 @@ public class bindings {
        public static native void MinFinalCltvExpiry_set_a(long this_ptr, long val);
        // MUST_USE_RES struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_new(uint64_t a_arg);
        public static native long MinFinalCltvExpiry_new(long a_arg);
+       // uint64_t MinFinalCltvExpiry_clone_ptr(LDKMinFinalCltvExpiry *NONNULL_PTR arg);
+       public static native long MinFinalCltvExpiry_clone_ptr(long arg);
        // struct LDKMinFinalCltvExpiry MinFinalCltvExpiry_clone(const struct LDKMinFinalCltvExpiry *NONNULL_PTR orig);
        public static native long MinFinalCltvExpiry_clone(long orig);
        // uint64_t MinFinalCltvExpiry_hash(const struct LDKMinFinalCltvExpiry *NONNULL_PTR o);
@@ -5380,6 +6095,8 @@ public class bindings {
        public static native boolean MinFinalCltvExpiry_eq(long a, long b);
        // void Fallback_free(struct LDKFallback this_ptr);
        public static native void Fallback_free(long this_ptr);
+       // uint64_t Fallback_clone_ptr(LDKFallback *NONNULL_PTR arg);
+       public static native long Fallback_clone_ptr(long arg);
        // struct LDKFallback Fallback_clone(const struct LDKFallback *NONNULL_PTR orig);
        public static native long Fallback_clone(long orig);
        // struct LDKFallback Fallback_seg_wit_program(struct LDKu5 version, struct LDKCVec_u8Z program);
@@ -5394,12 +6111,16 @@ public class bindings {
        public static native boolean Fallback_eq(long a, long b);
        // void InvoiceSignature_free(struct LDKInvoiceSignature this_obj);
        public static native void InvoiceSignature_free(long this_obj);
+       // uint64_t InvoiceSignature_clone_ptr(LDKInvoiceSignature *NONNULL_PTR arg);
+       public static native long InvoiceSignature_clone_ptr(long arg);
        // struct LDKInvoiceSignature InvoiceSignature_clone(const struct LDKInvoiceSignature *NONNULL_PTR orig);
        public static native long InvoiceSignature_clone(long orig);
        // bool InvoiceSignature_eq(const struct LDKInvoiceSignature *NONNULL_PTR a, const struct LDKInvoiceSignature *NONNULL_PTR b);
        public static native boolean InvoiceSignature_eq(long a, long b);
        // void PrivateRoute_free(struct LDKPrivateRoute this_obj);
        public static native void PrivateRoute_free(long this_obj);
+       // uint64_t PrivateRoute_clone_ptr(LDKPrivateRoute *NONNULL_PTR arg);
+       public static native long PrivateRoute_clone_ptr(long arg);
        // struct LDKPrivateRoute PrivateRoute_clone(const struct LDKPrivateRoute *NONNULL_PTR orig);
        public static native long PrivateRoute_clone(long orig);
        // uint64_t PrivateRoute_hash(const struct LDKPrivateRoute *NONNULL_PTR o);
@@ -5540,6 +6261,8 @@ public class bindings {
        public static native String SemanticError_to_str(long o);
        // void SignOrCreationError_free(struct LDKSignOrCreationError this_ptr);
        public static native void SignOrCreationError_free(long this_ptr);
+       // uint64_t SignOrCreationError_clone_ptr(LDKSignOrCreationError *NONNULL_PTR arg);
+       public static native long SignOrCreationError_clone_ptr(long arg);
        // struct LDKSignOrCreationError SignOrCreationError_clone(const struct LDKSignOrCreationError *NONNULL_PTR orig);
        public static native long SignOrCreationError_clone(long orig);
        // struct LDKSignOrCreationError SignOrCreationError_sign_error(void);
@@ -5564,6 +6287,8 @@ public class bindings {
        public static native void RetryAttempts_set_a(long this_ptr, long val);
        // MUST_USE_RES struct LDKRetryAttempts RetryAttempts_new(uintptr_t a_arg);
        public static native long RetryAttempts_new(long a_arg);
+       // uint64_t RetryAttempts_clone_ptr(LDKRetryAttempts *NONNULL_PTR arg);
+       public static native long RetryAttempts_clone_ptr(long arg);
        // struct LDKRetryAttempts RetryAttempts_clone(const struct LDKRetryAttempts *NONNULL_PTR orig);
        public static native long RetryAttempts_clone(long orig);
        // bool RetryAttempts_eq(const struct LDKRetryAttempts *NONNULL_PTR a, const struct LDKRetryAttempts *NONNULL_PTR b);
@@ -5572,6 +6297,8 @@ public class bindings {
        public static native long RetryAttempts_hash(long o);
        // void PaymentError_free(struct LDKPaymentError this_ptr);
        public static native void PaymentError_free(long this_ptr);
+       // uint64_t PaymentError_clone_ptr(LDKPaymentError *NONNULL_PTR arg);
+       public static native long PaymentError_clone_ptr(long arg);
        // struct LDKPaymentError PaymentError_clone(const struct LDKPaymentError *NONNULL_PTR orig);
        public static native long PaymentError_clone(long orig);
        // struct LDKPaymentError PaymentError_invoice(struct LDKStr a);