import lombok.Delegate; import lombok.Getter; class DelegateOnGetter { private interface Bar { void setList(java.util.ArrayList list); int getInt(); } private final @Delegate @Getter(lazy = true) java.util.concurrent.atomic.AtomicReference bar = new java.util.concurrent.atomic.AtomicReference(); DelegateOnGetter() { super(); } public @Delegate @java.lang.SuppressWarnings({"all", "unchecked"}) Bar getBar() { java.lang.Object value = this.bar.get(); if ((value == null)) { synchronized (this.bar) { value = this.bar.get(); if ((value == null)) { final Bar actualValue = new Bar() { x() { super(); } public void setList(java.util.ArrayList list) { } public int getInt() { return 42; } }; value = ((actualValue == null) ? this.bar : actualValue); this.bar.set(value); } } } return (Bar) ((value == this.bar) ? null : value); } public @java.lang.SuppressWarnings("all") int getInt() { return this.getBar().getInt(); } public @java.lang.SuppressWarnings("all") void setList(final java.util.ArrayList list) { this.getBar().setList(list); } }