diff --git a/src/main/java/rx/internal/operators/OperatorMaterialize.java b/src/main/java/rx/internal/operators/OperatorMaterialize.java
index bd5771747c..e074cd5816 100644
--- a/src/main/java/rx/internal/operators/OperatorMaterialize.java
+++ b/src/main/java/rx/internal/operators/OperatorMaterialize.java
@@ -15,8 +15,11 @@
*/
package rx.internal.operators;
+import java.util.concurrent.atomic.AtomicLongFieldUpdater;
+
import rx.Notification;
import rx.Observable.Operator;
+import rx.Producer;
import rx.Subscriber;
import rx.plugins.RxJavaPlugins;
@@ -29,41 +32,137 @@
* See here for the Microsoft Rx equivalent.
*/
public final class OperatorMaterialize implements Operator, T> {
+
/** Lazy initialization via inner-class holder. */
private static final class Holder {
/** A singleton instance. */
static final OperatorMaterialize