package com.novoda.downloadmanager;

/**
 * Builds instances of {@link Batch} using a fluent API.
 */
public interface BatchBuilder {

    /**
     * Sets {@link BatchFileBuilder} to build a {@link Batch} that will download a {@link BatchFile}
     * from a given  networkAddress.
     *
     * @param networkAddress to download file from.
     * @return {@link BatchFileBuilder}.
     */
    BatchFileBuilder downloadFrom(String networkAddress);

    /**
     * Build a new {@link Batch} instance.
     *
     * @return an instance of {@link Batch}.
     */
    Batch build();
}

@@ -570,11 +570,329 @@
 build();
+%0A%0A    static BatchBuilder from(Batch batch) %7B%0A        InternalBatchBuilder builder = (InternalBatchBuilder) Batch.with(batch.storageRoot(), batch.downloadBatchId(), batch.title());%0A        for (BatchFile batchFile : batch.batchFiles()) %7B%0A            builder.withFile(batchFile);%0A        %7D%0A        return builder;%0A    %7D
 %0A%7D%0A

Add mechanism to create a `BatchBuilder` from a given batch.