// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry.util;

import io.sentry.SentryOptions;
import io.sentry.SentryLevel;
import org.jetbrains.annotations.Nullable;
import io.sentry.ILogger;
import org.jetbrains.annotations.NotNull;

public class LoadClass
{
    @Nullable
    public Class<?> loadClass(@NotNull final String clazz, @Nullable final ILogger logger) {
        try {
            return Class.forName(clazz);
        }
        catch (final ClassNotFoundException e) {
            if (logger != null) {
                logger.log(SentryLevel.INFO, "Class not available: " + clazz, new Object[0]);
            }
        }
        catch (final UnsatisfiedLinkError e2) {
            if (logger != null) {
                logger.log(SentryLevel.ERROR, "Failed to load (UnsatisfiedLinkError) " + clazz, e2);
            }
        }
        catch (final Throwable e3) {
            if (logger != null) {
                logger.log(SentryLevel.ERROR, "Failed to initialize " + clazz, e3);
            }
        }
        return null;
    }
    
    public boolean isClassAvailable(@NotNull final String clazz, @Nullable final ILogger logger) {
        return this.loadClass(clazz, logger) != null;
    }
    
    public boolean isClassAvailable(@NotNull final String clazz, @Nullable final SentryOptions options) {
        return this.isClassAvailable(clazz, (options != null) ? options.getLogger() : null);
    }
    
    public LazyEvaluator<Boolean> isClassAvailableLazy(@NotNull final String clazz, @Nullable final ILogger logger) {
        return new LazyEvaluator<Boolean>(() -> this.isClassAvailable(clazz, logger));
    }
    
    public LazyEvaluator<Boolean> isClassAvailableLazy(@NotNull final String clazz, @Nullable final SentryOptions options) {
        return new LazyEvaluator<Boolean>(() -> this.isClassAvailable(clazz, options));
    }
}
