question: private void emitPermutationsAppCache ( TreeLogger logger , LinkerContext context , ArtifactSet artifacts , String startScreenId , OfflineScreen offlineScreen ) throws UnableToCompleteException { for ( EmittedArtifact emitted : artifacts . find ( EmittedArtifact . class ) ) { if ( emitted . getVisibility ( ) == Visibility . Private ) { continue ; } String pathName = emitted . getPartialPath ( ) ; if ( acceptCachedResource ( pathName ) ) { if ( ! allArtifacts . contains ( pathName ) ) { cachedArtifacts . add ( pathName ) ; } } } Set < ArtifactsGroup > keySet = artifactsByGroup . keySet ( ) ; for ( ArtifactsGroup group : keySet ) { Set < String > set = artifactsByGroup . get ( group ) ; set . addAll ( cachedArtifacts ) ; artifacts . add ( createCacheManifest ( context , logger , set , group . getGroupId ( ) , startScreenId , offlineScreen ) ) ; artifacts . add ( createCacheManifestLoader ( context , logger , group . getGroupId ( ) , startScreenId ) ) ; } }
target:  manifest file manipulation methods