package com.intellij.lang.javascript.flex.projectStructure;
import org.jetbrains.annotations.Nullable;
public abstract class LazyInitializer<T> {
@Nullable
private T myInitializedFor;
public void ensureInitialized(T t) {
if (myInitializedFor == null) {
initialize(t);
myInitializedFor = t;
}
else if (myInitializedFor != t) {
throw new IllegalArgumentException(
"Trying to initialize for different entity " + t + ", was originally initialized for " + myInitializedFor);
}
}
protected abstract void initialize(T t);
public final void dispose() {
myInitializedFor = null;
doDispose();
}
protected abstract void doDispose();
}