.class public final Lcom/google/android/gms/internal/ads/zzbbq$zzab; .super Lcom/google/android/gms/internal/ads/zzgxr; .source "SourceFile" # interfaces .implements Lcom/google/android/gms/internal/ads/zzbbq$zzae; # annotations .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/android/gms/internal/ads/zzgxr<", "Lcom/google/android/gms/internal/ads/zzbbq$zzab;", "Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza;", ">;", "Lcom/google/android/gms/internal/ads/zzbbq$zzae;" } .end annotation # static fields .field public static final zza:I = 0x1 .field public static final zzb:I = 0x2 .field private static final zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .field private static volatile zzd:Lcom/google/android/gms/internal/ads/zzgzk; .annotation system Ldalvik/annotation/Signature; value = { "Lcom/google/android/gms/internal/ads/zzgzk<", "Lcom/google/android/gms/internal/ads/zzbbq$zzab;", ">;" } .end annotation .end field # instance fields .field private zze:I .field private zzf:I .field private zzg:I # direct methods .method static constructor ()V .locals 2 .line 1 new-instance v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; invoke-direct {v0}, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->()V sput-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; const-class v1, Lcom/google/android/gms/internal/ads/zzbbq$zzab; invoke-static {v1, v0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbZ(Ljava/lang/Class;Lcom/google/android/gms/internal/ads/zzgxr;)V return-void .end method .method private constructor ()V .locals 0 .line 1 invoke-direct {p0}, Lcom/google/android/gms/internal/ads/zzgxr;->()V return-void .end method .method private zzA()V .locals 1 iget v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I and-int/lit8 v0, v0, -0x2 iput v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I const/4 v0, 0x0 iput v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzf:I return-void .end method .method private zzB(Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;)V .locals 0 .line 1 invoke-virtual {p1}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;->zza()I move-result p1 iput p1, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzg:I iget p1, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I or-int/lit8 p1, p1, 0x2 iput p1, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I return-void .end method .method private zzC(Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;)V .locals 0 .line 1 invoke-virtual {p1}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;->zza()I move-result p1 iput p1, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzf:I iget p1, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I or-int/lit8 p1, p1, 0x1 iput p1, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I return-void .end method .method public static zza()Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza; .locals 1 sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-virtual {v0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzaZ()Lcom/google/android/gms/internal/ads/zzgxl; move-result-object v0 check-cast v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza; return-object v0 .end method .method public static zzb(Lcom/google/android/gms/internal/ads/zzbbq$zzab;)Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza; .locals 1 sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-virtual {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzba(Lcom/google/android/gms/internal/ads/zzgxr;)Lcom/google/android/gms/internal/ads/zzgxl; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza; return-object p0 .end method .method public static bridge synthetic zzc()Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object v0 .end method .method public static zzd()Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object v0 .end method .method public static zzi(Ljava/io/InputStream;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbk(Lcom/google/android/gms/internal/ads/zzgxr;Ljava/io/InputStream;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzj(Ljava/io/InputStream;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbl(Lcom/google/android/gms/internal/ads/zzgxr;Ljava/io/InputStream;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzk(Lcom/google/android/gms/internal/ads/zzgwj;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Lcom/google/android/gms/internal/ads/zzgyg; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbm(Lcom/google/android/gms/internal/ads/zzgxr;Lcom/google/android/gms/internal/ads/zzgwj;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzl(Lcom/google/android/gms/internal/ads/zzgwp;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbn(Lcom/google/android/gms/internal/ads/zzgxr;Lcom/google/android/gms/internal/ads/zzgwp;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzm(Ljava/io/InputStream;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbo(Lcom/google/android/gms/internal/ads/zzgxr;Ljava/io/InputStream;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzn(Ljava/nio/ByteBuffer;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Lcom/google/android/gms/internal/ads/zzgyg; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbp(Lcom/google/android/gms/internal/ads/zzgxr;Ljava/nio/ByteBuffer;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzo([B)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Lcom/google/android/gms/internal/ads/zzgyg; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbq(Lcom/google/android/gms/internal/ads/zzgxr;[B)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzp(Lcom/google/android/gms/internal/ads/zzgwj;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Lcom/google/android/gms/internal/ads/zzgyg; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbr(Lcom/google/android/gms/internal/ads/zzgxr;Lcom/google/android/gms/internal/ads/zzgwj;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzq(Lcom/google/android/gms/internal/ads/zzgwp;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbs(Lcom/google/android/gms/internal/ads/zzgxr;Lcom/google/android/gms/internal/ads/zzgwp;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzr(Ljava/io/InputStream;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Ljava/io/IOException; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbu(Lcom/google/android/gms/internal/ads/zzgxr;Ljava/io/InputStream;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzs(Ljava/nio/ByteBuffer;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Lcom/google/android/gms/internal/ads/zzgyg; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbv(Lcom/google/android/gms/internal/ads/zzgxr;Ljava/nio/ByteBuffer;Lcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzt([BLcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzbbq$zzab; .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Lcom/google/android/gms/internal/ads/zzgyg; } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-static {v0, p0, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbx(Lcom/google/android/gms/internal/ads/zzgxr;[BLcom/google/android/gms/internal/ads/zzgxb;)Lcom/google/android/gms/internal/ads/zzgxr; move-result-object p0 check-cast p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p0 .end method .method public static zzu()Lcom/google/android/gms/internal/ads/zzgzk; .locals 1 .annotation system Ldalvik/annotation/Signature; value = { "()", "Lcom/google/android/gms/internal/ads/zzgzk<", "Lcom/google/android/gms/internal/ads/zzbbq$zzab;", ">;" } .end annotation sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; .line 1 invoke-virtual {v0}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbN()Lcom/google/android/gms/internal/ads/zzgzk; move-result-object v0 return-object v0 .end method .method public static bridge synthetic zzv(Lcom/google/android/gms/internal/ads/zzbbq$zzab;)V .locals 0 invoke-direct {p0}, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzz()V return-void .end method .method public static bridge synthetic zzw(Lcom/google/android/gms/internal/ads/zzbbq$zzab;)V .locals 0 invoke-direct {p0}, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzA()V return-void .end method .method public static bridge synthetic zzx(Lcom/google/android/gms/internal/ads/zzbbq$zzab;Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;)V .locals 0 invoke-direct {p0, p1}, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzB(Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;)V return-void .end method .method public static bridge synthetic zzy(Lcom/google/android/gms/internal/ads/zzbbq$zzab;Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;)V .locals 0 invoke-direct {p0, p1}, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzC(Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;)V return-void .end method .method private zzz()V .locals 1 iget v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I and-int/lit8 v0, v0, -0x3 iput v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I const/4 v0, 0x0 iput v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzg:I return-void .end method # virtual methods .method public final zzdc(Lcom/google/android/gms/internal/ads/zzgxq;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; .locals 2 .line 1 invoke-virtual {p1}, Ljava/lang/Enum;->ordinal()I move-result p1 if-eqz p1, :cond_7 const/4 p2, 0x2 if-eq p1, p2, :cond_6 const/4 p2, 0x3 if-eq p1, p2, :cond_5 const/4 p2, 0x4 const/4 p3, 0x0 if-eq p1, p2, :cond_4 const/4 p2, 0x5 if-eq p1, p2, :cond_3 const/4 p2, 0x6 if-ne p1, p2, :cond_2 sget-object p1, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzd:Lcom/google/android/gms/internal/ads/zzgzk; if-nez p1, :cond_1 const-class p2, Lcom/google/android/gms/internal/ads/zzbbq$zzab; monitor-enter p2 :try_start_0 sget-object p1, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzd:Lcom/google/android/gms/internal/ads/zzgzk; if-nez p1, :cond_0 .line 3 new-instance p1, Lcom/google/android/gms/internal/ads/zzgxm; sget-object p3, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; invoke-direct {p1, p3}, Lcom/google/android/gms/internal/ads/zzgxm;->(Lcom/google/android/gms/internal/ads/zzgxr;)V sput-object p1, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzd:Lcom/google/android/gms/internal/ads/zzgzk; goto :goto_0 :catchall_0 move-exception p1 goto :goto_1 .line 4 :cond_0 :goto_0 monitor-exit p2 goto :goto_2 :goto_1 monitor-exit p2 :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 throw p1 :cond_1 :goto_2 return-object p1 .line 9 :cond_2 throw p3 :cond_3 sget-object p1, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; return-object p1 .line 7 :cond_4 new-instance p1, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza; .line 8 invoke-direct {p1, p3}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zza;->(Lcom/google/android/gms/internal/ads/zzbbr;)V return-object p1 :cond_5 new-instance p1, Lcom/google/android/gms/internal/ads/zzbbq$zzab; invoke-direct {p1}, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->()V return-object p1 :cond_6 const-string p1, "zze" const-string p2, "zzf" .line 5 invoke-static {}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;->zze()Lcom/google/android/gms/internal/ads/zzgxx; move-result-object p3 const-string v0, "zzg" .line 6 invoke-static {}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;->zze()Lcom/google/android/gms/internal/ads/zzgxx; move-result-object v1 filled-new-array {p1, p2, p3, v0, v1}, [Ljava/lang/Object; move-result-object p1 sget-object p2, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzc:Lcom/google/android/gms/internal/ads/zzbbq$zzab; const-string p3, "\u0004\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u180c\u0000\u0002\u180c\u0001" .line 7 invoke-static {p2, p3, p1}, Lcom/google/android/gms/internal/ads/zzgxr;->zzbQ(Lcom/google/android/gms/internal/ads/zzgzc;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 return-object p1 :cond_7 const/4 p1, 0x1 .line 2 invoke-static {p1}, Ljava/lang/Byte;->valueOf(B)Ljava/lang/Byte; move-result-object p1 return-object p1 .end method .method public zze()Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb; .locals 1 iget v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzg:I .line 1 invoke-static {v0}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;->zzb(I)Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb; move-result-object v0 if-nez v0, :cond_0 sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb;->zza:Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzb; :cond_0 return-object v0 .end method .method public zzf()Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc; .locals 1 iget v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zzf:I .line 1 invoke-static {v0}, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;->zzb(I)Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc; move-result-object v0 if-nez v0, :cond_0 sget-object v0, Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc;->zza:Lcom/google/android/gms/internal/ads/zzbbq$zzab$zzc; :cond_0 return-object v0 .end method .method public zzg()Z .locals 1 iget v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I and-int/lit8 v0, v0, 0x2 if-eqz v0, :cond_0 const/4 v0, 0x1 return v0 :cond_0 const/4 v0, 0x0 return v0 .end method .method public zzh()Z .locals 2 iget v0, p0, Lcom/google/android/gms/internal/ads/zzbbq$zzab;->zze:I const/4 v1, 0x1 and-int/2addr v0, v1 if-eqz v0, :cond_0 return v1 :cond_0 const/4 v0, 0x0 return v0 .end method