.class public final Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState; .super Lkotlin/io/FileTreeWalk$DirectoryState; .source "SourceFile" # annotations .annotation system Ldalvik/annotation/EnclosingClass; value = Lkotlin/io/FileTreeWalk$FileTreeWalkIterator; .end annotation .annotation system Ldalvik/annotation/InnerClass; accessFlags = 0x11 name = "BottomUpDirectoryState" .end annotation # instance fields .field public failed:Z .field public fileIndex:I .field public fileList:[Ljava/io/File; .field public rootVisited:Z .field public final synthetic this$0:Lkotlin/io/FileTreeWalk$FileTreeWalkIterator; # direct methods .method public constructor (Lkotlin/io/FileTreeWalk$FileTreeWalkIterator;Ljava/io/File;)V .locals 1 const-string v0, "rootDir" invoke-static {p2, v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V iput-object p1, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->this$0:Lkotlin/io/FileTreeWalk$FileTreeWalkIterator; .line 117 invoke-direct {p0, p2}, Lkotlin/io/FileTreeWalk$DirectoryState;->(Ljava/io/File;)V return-void .end method # virtual methods .method public step()Ljava/io/File; .locals 11 iget-boolean v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->failed:Z const/4 v1, 0x0 const/4 v2, 0x1 if-nez v0, :cond_2 iget-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileList:[Ljava/io/File; if-nez v0, :cond_2 iget-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->this$0:Lkotlin/io/FileTreeWalk$FileTreeWalkIterator; .line 130 iget-object v0, v0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator;->this$0:Lkotlin/io/FileTreeWalk; invoke-static {v0}, Lkotlin/io/FileTreeWalk;->access$getOnEnter$p(Lkotlin/io/FileTreeWalk;)Lkotlin/jvm/functions/Function1; move-result-object v0 if-eqz v0, :cond_0 invoke-virtual {p0}, Lkotlin/io/FileTreeWalk$WalkState;->getRoot()Ljava/io/File; move-result-object v3 invoke-interface {v0, v3}, Lkotlin/jvm/functions/Function1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 check-cast v0, Ljava/lang/Boolean; invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z move-result v0 if-nez v0, :cond_0 return-object v1 .line 134 :cond_0 invoke-virtual {p0}, Lkotlin/io/FileTreeWalk$WalkState;->getRoot()Ljava/io/File; move-result-object v0 invoke-virtual {v0}, Ljava/io/File;->listFiles()[Ljava/io/File; move-result-object v0 iput-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileList:[Ljava/io/File; if-nez v0, :cond_2 iget-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->this$0:Lkotlin/io/FileTreeWalk$FileTreeWalkIterator; .line 136 iget-object v0, v0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator;->this$0:Lkotlin/io/FileTreeWalk; invoke-static {v0}, Lkotlin/io/FileTreeWalk;->access$getOnFail$p(Lkotlin/io/FileTreeWalk;)Lkotlin/jvm/functions/Function2; move-result-object v0 if-eqz v0, :cond_1 invoke-virtual {p0}, Lkotlin/io/FileTreeWalk$WalkState;->getRoot()Ljava/io/File; move-result-object v3 new-instance v10, Lkotlin/io/AccessDeniedException; invoke-virtual {p0}, Lkotlin/io/FileTreeWalk$WalkState;->getRoot()Ljava/io/File; move-result-object v5 const/4 v6, 0x0 const-string v7, "Cannot list files in a directory" const/4 v8, 0x2 const/4 v9, 0x0 move-object v4, v10 invoke-direct/range {v4 .. v9}, Lkotlin/io/AccessDeniedException;->(Ljava/io/File;Ljava/io/File;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V invoke-interface {v0, v3, v10}, Lkotlin/jvm/functions/Function2;->invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; :cond_1 iput-boolean v2, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->failed:Z :cond_2 iget-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileList:[Ljava/io/File; if-eqz v0, :cond_3 iget v3, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileIndex:I .line 140 invoke-static {v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V array-length v0, v0 if-ge v3, v0, :cond_3 iget-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileList:[Ljava/io/File; .line 142 invoke-static {v0}, Lkotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V iget v1, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileIndex:I add-int/lit8 v2, v1, 0x1 iput v2, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->fileIndex:I aget-object v0, v0, v1 return-object v0 :cond_3 iget-boolean v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->rootVisited:Z if-nez v0, :cond_4 iput-boolean v2, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->rootVisited:Z .line 146 invoke-virtual {p0}, Lkotlin/io/FileTreeWalk$WalkState;->getRoot()Ljava/io/File; move-result-object v0 return-object v0 :cond_4 iget-object v0, p0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator$BottomUpDirectoryState;->this$0:Lkotlin/io/FileTreeWalk$FileTreeWalkIterator; .line 149 iget-object v0, v0, Lkotlin/io/FileTreeWalk$FileTreeWalkIterator;->this$0:Lkotlin/io/FileTreeWalk; invoke-static {v0}, Lkotlin/io/FileTreeWalk;->access$getOnLeave$p(Lkotlin/io/FileTreeWalk;)Lkotlin/jvm/functions/Function1; move-result-object v0 if-eqz v0, :cond_5 invoke-virtual {p0}, Lkotlin/io/FileTreeWalk$WalkState;->getRoot()Ljava/io/File; move-result-object v2 invoke-interface {v0, v2}, Lkotlin/jvm/functions/Function1;->invoke(Ljava/lang/Object;)Ljava/lang/Object; :cond_5 return-object v1 .end method