class AndroidLibraryImpl extends LibraryImpl implements AndroidLibrary, Serializable {

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        AndroidLibraryImpl that = (AndroidLibraryImpl) o;

        // quick fail on hashcode to avoid comparing the whole tree
        if (hashcode != that.hashcode || !super.equals(o)) {
            return false;
        }

        return Objects.equal(variant, that.variant)
                && Objects.equal(bundle, that.bundle)
                && Objects.equal(folder, that.folder)
                && Objects.equal(resStaticLibrary, that.resStaticLibrary)
                && Objects.equal(androidLibraries, that.androidLibraries)
                && Objects.equal(javaLibraries, that.javaLibraries)
                && Objects.equal(localJars, that.localJars);
    }

    public  AndroidLibraryImpl(
            @NonNull MavenCoordinates coordinates,
            @Nullable String buildId,
            @Nullable String projectPath,
            @NonNull File bundle,
            @NonNull File extractedFolder,
            @Nullable File resStaticLibrary,
            @Nullable String variant,
            boolean isProvided,
            boolean isSkipped,
            @NonNull List<AndroidLibrary> androidLibraries,
            @NonNull Collection<JavaLibrary> javaLibraries,
            @NonNull Collection<File> localJavaLibraries);

}