+ public static interface LockableScoreInterface {
+ /**
+ * Returns the locked scorer.
+ */
+ Score lock();
+ }
+ private static class LDKLockableScoreHolder { LockableScore held; }
+ public static LockableScore new_impl(LockableScoreInterface arg) {
+ final LDKLockableScoreHolder impl_holder = new LDKLockableScoreHolder();
+ impl_holder.held = new LockableScore(new bindings.LDKLockableScore() {
+ @Override public long lock() {
+ Score ret = arg.lock();
+ Reference.reachabilityFence(arg);
+ long result = ret == null ? 0 : ret.ptr;
+ if (impl_holder.held != null) { impl_holder.held.ptrs_to.add(ret); };
+ return result;
+ }
+ });
+ return impl_holder.held;
+ }