public <T> T fromXmlPartial(String partial, Class<T> o) throws Exception {
        return fromXmlPartial(toInputStream(partial, UTF_8), o);
    }
@Test
    void shouldLoadPipelineWithP4MaterialFromXmlPartial() throws Exception {
        String pipelineWithP4MaterialXmlPartial =
                """
                        <pipeline name="pipeline">
                          <materials>
                            <p4 port="10.18.3.241:9999" username="cruise" password="password"         useTickets="true">
                                  <view><![CDATA[//depot/dev/... //lumberjack/...]]></view>
                            </p4>
                          </materials>
                          <stage name="mingle">
                            <jobs>
                              <job name="functional">
                                <artifacts>
                                  <log src="artifact1.xml" dest="cruise-output" />
                                </artifacts>
                              </job>
                            </jobs>
                          </stage>
                        </pipeline>
                        """;
        PipelineConfig pipeline = xmlLoader.fromXmlPartial(pipelineWithP4MaterialXmlPartial, PipelineConfig.class);
        assertThat(pipeline.name()).isEqualTo(new CaseInsensitiveString("pipeline"));
        MaterialConfig material = pipeline.materialConfigs().first();
        assertThat(material).isInstanceOf(P4MaterialConfig.class);
        assertThat(((P4MaterialConfig) material).getUseTickets()).isTrue();
    }