human
Convert this Smali-code to Java-code:

.class public interface abstract Landroid/hidl/base/V1_0/IBase;
.super Ljava/lang/Object;
.source "IBase.java"

# interfaces
.implements Landroid/os/IHwInterface;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Landroid/hidl/base/V1_0/IBase$Stub;,
        Landroid/hidl/base/V1_0/IBase$Proxy;
    }
.end annotation


# static fields
.field public static final kInterfaceName:Ljava/lang/String; = "android.hidl.base@1.0::IBase"


# direct methods
.method public static asInterface(Landroid/os/IHwBinder;)Landroid/hidl/base/V1_0/IBase;
    .locals 7
    .param p0, "binder"    # Landroid/os/IHwBinder;

    .line 24
    const/4 v0, 0x0

    if-nez p0, :cond_0

    .line 25
    return-object v0

    .line 28
    :cond_0
    nop

    .line 29
    const-string v1, "android.hidl.base@1.0::IBase"

    invoke-interface {p0, v1}, Landroid/os/IHwBinder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IHwInterface;

    move-result-object v2

    .line 31
    .local v2, "iface":Landroid/os/IHwInterface;
    if-eqz v2, :cond_1

    instance-of v3, v2, Landroid/hidl/base/V1_0/IBase;

    if-eqz v3, :cond_1

    .line 32
    move-object v0, v2

    check-cast v0, Landroid/hidl/base/V1_0/IBase;

    return-object v0

    .line 35
    :cond_1
    new-instance v3, Landroid/hidl/base/V1_0/IBase$Proxy;

    invoke-direct {v3, p0}, Landroid/hidl/base/V1_0/IBase$Proxy;-><init>(Landroid/os/IHwBinder;)V

    .line 38
    .local v3, "proxy":Landroid/hidl/base/V1_0/IBase;
    :try_start_0
    invoke-interface {v3}, Landroid/hidl/base/V1_0/IBase;->interfaceChain()Ljava/util/ArrayList;

    move-result-object v4

    invoke-virtual {v4}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v4

    :goto_0
    invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z

    move-result v5

    if-eqz v5, :cond_3

    invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v5

    check-cast v5, Ljava/lang/String;

    .line 39
    .local v5, "descriptor":Ljava/lang/String;
    invoke-virtual {v5, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v6
    :try_end_0
    .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_0} :catch_0

    if-eqz v6, :cond_2

    .line 40
    return-object v3

    .line 42
    .end local v5    # "descriptor":Ljava/lang/String;
    :cond_2
    goto :goto_0

    .line 44
    :cond_3
    goto :goto_1

    .line 43
    :catch_0
    move-exception v1

    .line 46
    :goto_1
    return-object v0
.end method

.method public static castFrom(Landroid/os/IHwInterface;)Landroid/hidl/base/V1_0/IBase;
    .locals 1
    .param p0, "iface"    # Landroid/os/IHwInterface;

    .line 53
    if-nez p0, :cond_0

    const/4 v0, 0x0

    goto :goto_0

    :cond_0
    invoke-interface {p0}, Landroid/os/IHwInterface;->asBinder()Landroid/os/IHwBinder;

    move-result-object v0

    invoke-static {v0}, Landroid/hidl/base/V1_0/IBase;->asInterface(Landroid/os/IHwBinder;)Landroid/hidl/base/V1_0/IBase;

    move-result-object v0

    :goto_0
    return-object v0
.end method

.method public static getService()Landroid/hidl/base/V1_0/IBase;
    .locals 1
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation

    .line 88
    const-string v0, "default"

    invoke-static {v0}, Landroid/hidl/base/V1_0/IBase;->getService(Ljava/lang/String;)Landroid/hidl/base/V1_0/IBase;

    move-result-object v0

    return-object v0
.end method

.method public static getService(Ljava/lang/String;)Landroid/hidl/base/V1_0/IBase;
    .locals 1
    .param p0, "serviceName"    # Ljava/lang/String;
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation

    .line 81
    const-string v0, "android.hidl.base@1.0::IBase"

    invoke-static {v0, p0}, Landroid/os/HwBinder;->getService(Ljava/lang/String;Ljava/lang/String;)Landroid/os/IHwBinder;

    move-result-object v0

    invoke-static {v0}, Landroid/hidl/base/V1_0/IBase;->asInterface(Landroid/os/IHwBinder;)Landroid/hidl/base/V1_0/IBase;

    move-result-object v0

    return-object v0
.end method

.method public static getService(Ljava/lang/String;Z)Landroid/hidl/base/V1_0/IBase;
    .locals 1
    .param p0, "serviceName"    # Ljava/lang/String;
    .param p1, "retry"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation

    .line 66
    const-string v0, "android.hidl.base@1.0::IBase"

    invoke-static {v0, p0, p1}, Landroid/os/HwBinder;->getService(Ljava/lang/String;Ljava/lang/String;Z)Landroid/os/IHwBinder;

    move-result-object v0

    invoke-static {v0}, Landroid/hidl/base/V1_0/IBase;->asInterface(Landroid/os/IHwBinder;)Landroid/hidl/base/V1_0/IBase;

    move-result-object v0

    return-object v0
.end method

.method public static getService(Z)Landroid/hidl/base/V1_0/IBase;
    .locals 1
    .param p0, "retry"    # Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation

    .line 73
    const-string v0, "default"

    invoke-static {v0, p0}, Landroid/hidl/base/V1_0/IBase;->getService(Ljava/lang/String;Z)Landroid/hidl/base/V1_0/IBase;

    move-result-object v0

    return-object v0
.end method


# virtual methods
.method public abstract asBinder()Landroid/os/IHwBinder;
.end method

.method public abstract debug(Landroid/os/NativeHandle;Ljava/util/ArrayList;)V
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Landroid/os/NativeHandle;",
            "Ljava/util/ArrayList<",
            "Ljava/lang/String;",
            ">;)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract getDebugInfo()Landroid/hidl/base/V1_0/DebugInfo;
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract getHashChain()Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/ArrayList<",
            "[B>;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract interfaceChain()Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/ArrayList<",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract interfaceDescriptor()Ljava/lang/String;
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract notifySyspropsChanged()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract ping()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract setHALInstrumentation()V
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method

.method public abstract unlinkToDeath(Landroid/os/IHwBinder$DeathRecipient;)Z
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Landroid/os/RemoteException;
        }
    .end annotation
.end method
gpt
これが与えられたsmaliコードに相当するJavaコードです

`` Java
Android.os.hwbinderをインポートします。
Android.os.ihwbinderをインポートします。
Android.os.ihwinterfaceをインポートします。
Android.os.nativeHandleをインポートします。
Android.os.remoteexceptionをインポートします。
Android.hidl.base.v1_0.ibaseをインポートします。
java.util.iteratorをインポートします。

パブリックインターフェイスibaseはihwinterfaceを拡張します{
    public static final string kinterfacename = "android.hidl.base@1.0 :: ibase";

    public static ibase asinterface（ihwbinderバインダー）{//行24
        if（binder == null）{
            nullを返します。
        }

        ihwinterface iface = binder.querylocalinterface（kinterfaceName）;//行29
        if（iface instance of ibase）{
            return（ibase）iface;
        }
        ibase proxy = new ibase.proxy（バインダー）;
        試す {
            iterator <string> DecruptionRiterator = proxy.interfacechain（）。iterator（）;
            while（descriptoriterator.hasnext（））{
                string descriptor = descriptoriterator.next（）;
                if（descriptor.equals（kinterfaceName））{
                    プロキシを返します。
                }
            }
        } catch（android.os.remoteexception e）{
        }
        nullを返します。
    }

public static ibase castfrom（ihwinterface iface）{
        ibase result = null;
        if（iface！= null）{
            ihwbinder binder = iface.asbinder（）;
            result = ibase.asinterface（binder）;
        }
        返品結果;
    }

public static ibase getService（）スローremoteexception {
    文字列servicename = "default";
    return ibase.getService（servicename）;
}

public static ibase getService（String ServicEname）Throws Remoteexception {
    String Decruptor = "Android.hidl.base@1.0 :: ibase";
    ihwbinder binder = hwbinder.getService（descriptor、serviceName）;
    Ibase.asinterface（バインダー）を返します。
}

public static ibase getService（String ServicEname、boolean retry）Remoteexception {
    string interfaceName = "android.hidl.base@1.0 :: ibase";
    ihwbinder binder = hwbinder.getService（interfaceName、serviceName、retry）;
    Ibase.asinterface（バインダー）を返します。
}

public static ibase getService（boolean retry）スローremoteexception {
    文字列defaultString = "default";
    return getService（defaultString、retry）;
}

パブリックアブストラクトihwbinder asbinder（）;
    public abstract void debug（nativehandle fd、java.util.arraylist <string> options）remoteexceptionをスローします。
    パブリックアブストラクトAndroid.hidl.base.v1_0.debuginfo getDebuginfo（）Throws Remoteexception;
    public abstract java.util.arraylist <byte []> gethashchain（）throws remoteexception;
ArrayList <String> InterfaceChain（）はRemoteexceptionをスローします。
    string interfacedescriptor（）はremoteexceptionをスローします。
    boolean linktodeath（ihwbinder.deathRecipient Recipient、long cookie）はRemoteexceptionをスローします。
    void notifysspropschanged（）はremoteexceptionをスローします。
    void ping（）はremoteexceptionをスローします。
    void sethalinstrumentation（）はremoteexceptionをスローします。
    boolean linktodeath（ihwbinder.deathrecipient Recipient）は、Remoteexceptionをスローします。
}
`` `