package storm.lazy;

public class Lazy<T> {

    public interface LazyProvider<T> {
        T provide();
    }

    private final LazyProvider<T> mProvider;

    private T mCachedValue;
    private volatile boolean mIsProviderCalled;

    public Lazy(LazyProvider<T> provider) {
        if (provider == null) {
            throw new NullPointerException("Provider cannot be NULL");
        }
        this.mProvider = provider;
    }

    public T get() {
        if (!mIsProviderCalled) {
            synchronized (this) {
                mCachedValue = mProvider.provide();
                mIsProviderCalled = true;
            }
        }
        return mCachedValue;
    }

    public boolean isProviderCalled() {
        return mIsProviderCalled;
    }
}

@@ -438,16 +438,29 @@
  public 
+synchronized 
 T get() 
@@ -457,24 +457,24 @@
 d T get() %7B%0A
-
         if (
@@ -499,46 +499,8 @@
 ) %7B%0A
-            synchronized (this) %7B%0A    
     
@@ -543,20 +543,16 @@
 vide();%0A
-    
         
@@ -585,22 +585,8 @@
 ue;%0A
-            %7D%0A
     

Change synchronization for `get` method in `lazy` module