### Question:
AppcacheLinker extends AbstractLinker { @Nonnull final Map<String, String> parseFallbackResources( @Nonnull final TreeLogger logger, @Nonnull final Set<String> values ) throws UnableToCompleteException { final HashMap<String, String> fallbackFiles = new HashMap<>(); for ( final String line : values ) { final String[] elements = line.trim().split( " +" ); if ( 2 != elements.length ) { final String message = FALLBACK_FILES_CONFIGURATION_PROPERTY_NAME + " property value '" + line + "' should have two url paths separated by whitespace"; logger.log( Type.ERROR, message ); throw new UnableToCompleteException(); } fallbackFiles.put( elements[ 0 ], elements[ 1 ] ); } return fallbackFiles; }  @Override String getDescription(); @Override ArtifactSet link( @Nonnull final TreeLogger logger,
                           @Nonnull final LinkerContext context,
                           @Nonnull final ArtifactSet artifacts,
                           final boolean onePermutation );  }### Answer:
@Test public void parseFallbackResources() throws Exception { final AppcacheLinker linker = new AppcacheLinker(); final HashSet<String> fallbackResources = new HashSet<>(); fallbackResources.add( "a b" ); fallbackResources.add( "c d" ); fallbackResources.add( " e f" ); fallbackResources.add( "g h " ); final Map<String, String> map = linker.parseFallbackResources( TreeLogger.NULL, fallbackResources ); assertEquals( map.get( "a" ), "b" ); assertEquals( map.get( "c" ), "d" ); assertEquals( map.get( "e" ), "f" ); assertEquals( map.get( "g" ), "h" ); }