PipelineInfo { @Override public PipelineInfo clone() { return new PipelineInfo(toString()); } private  PipelineInfo(JsonObject dictionary);  PipelineInfo();  PipelineInfo(File file);  PipelineInfo(String string); void addUniform(String name, BasicType basicType,
                         Optional<Integer> arrayCount, List<? extends Number> values); void addUniform(String name, SamplerType samplerType, BuiltInTexture value); boolean hasUniform(String uniformName); @Override String toString(); void setUniforms(TranslationUnit tu,
      Supplier<Float> floatSupplier, Supplier<Integer> intSupplier,
      Supplier<Integer> uintSupplier,
      Supplier<Integer> boolSupplier,
      Supplier<BuiltInTexture> textureSupplier); void zeroUnsetUniforms(TranslationUnit tu); void addUniformBinding(String uniformName, boolean pushConstant, int number); void removeUniformBinding(String uniformName); int appendValueToUniform(String uniformName, Number value); List<String> getUniformNames(); int getNumUniforms(); void removeUniform(String uniformName); PipelineInfo renameUniforms(Map<String, String> uniformMapping); List<String> getArgs(String uniformName); boolean hasBindingOrIsPushConstant(String uniformName); boolean hasBinding(String uniformName); boolean isPushConstant(String uniformName); boolean isSampler(String uniformName); int getBinding(String uniformName); void addComputeInfo(int numGroupsX, int numGroupsY, int numGroupsZ,
                             int ssboBinding,
                             List<SsboFieldData> ssboFields); boolean hasGridInfo(); int getGridColumns(); int getGridRows(); void addGridInfo(int columns, int rows); int getUnusedBindingNumber(); void addSamplerInfo(String name, String samplerType, String textureName); @Override PipelineInfo clone();  }
@Test public void testClone() throws Exception { final Integer one = 1; final PipelineInfo pipelineInfo = new PipelineInfo(); pipelineInfo.addUniform("GLF_uniform_int_values", BasicType.INT, Optional.of(0), new ArrayList<>()); pipelineInfo.appendValueToUniform("GLF_uniform_int_values", one); assertTrue(pipelineInfo.getArgs("GLF_uniform_int_values").contains(one.toString())); assertTrue(pipelineInfo.clone().getArgs("GLF_uniform_int_values").contains(one.toString())); }