Is this interface really necessary? Since we depend on Guava, `Supplier<? extends ReuseCapableOracle<S,I,O>>` might be more appropriate and convenient.