### Question:
PostProcessingBlock implements ProguardFilesProvider { public void initWith(PostProcessingBlock that) { this.removeUnusedCode = that.isRemoveUnusedCode(); this.removeUnusedResources = that.isRemoveUnusedResources(); this.obfuscate = that.isObfuscate(); this.optimizeCode = that.isOptimizeCode(); this.proguardFiles = Lists.newArrayList(that.getProguardFiles(EXPLICIT)); this.testProguardFiles = Lists.newArrayList(that.getProguardFiles(TEST)); this.consumerProguardFiles = Lists.newArrayList(that.getProguardFiles(CONSUMER)); this.codeShrinker = that.getCodeShrinkerEnum(); } @Inject  PostProcessingBlock(@NonNull Project project); @VisibleForTesting  PostProcessingBlock(@NonNull Project project, List<File> proguardFiles); void initWith(PostProcessingBlock that); boolean isRemoveUnusedCode(); void setRemoveUnusedCode(boolean removeUnusedCode); boolean isRemoveUnusedResources(); void setRemoveUnusedResources(boolean removeUnusedResources); boolean isObfuscate(); void setObfuscate(boolean obfuscate); boolean isOptimizeCode(); void setOptimizeCode(boolean optimizeCode); void setProguardFiles(List<Object> proguardFiles); void proguardFile(Object file); void proguardFiles(Object... files); void setTestProguardFiles(List<Object> testProguardFiles); void testProguardFile(Object file); void testProguardFiles(Object... files); void setConsumerProguardFiles(List<Object> consumerProguardFiles); void consumerProguardFile(Object file); void consumerProguardFiles(Object... files); @NonNull String getCodeShrinker(); void setCodeShrinker(@NonNull String name); @Nullable CodeShrinker getCodeShrinkerEnum(); @NonNull @Override Collection<File> getProguardFiles(@NonNull ProguardFileType type);  }### Answer:
@Test public void testInitWith() { CopyOfTester.assertAllGettersCalled( PostProcessingBlock.class, new PostProcessingBlock(mockProject, Collections.emptyList()), original -> { PostProcessingBlock copy = new PostProcessingBlock(mockProject, Collections.emptyList()); copy.initWith(original); original.getCodeShrinker(); }); }