code: String convertPmml(Node mathEle) throws MathConverterException, TransformerException {
          String rawMathML = XmlDocumentWriter.stringify(mathEle);
          MathoidConverter converter = new MathoidConverter(config.getMathoid());
          try {
              // pmml > emml > pmml + cmml
              String eMathML = converter.convertMathML(rawMathML);
              EnrichedMathMLTransformer converter2 = new EnrichedMathMLTransformer(eMathML);
              return Optional
                      .ofNullable(converter2.getFullMathML())
                      .orElseThrow(() -> new MathConverterException("enriched mathml conversion failed"));
          } catch (HttpClientErrorException e) {
              logger.error("mathoid conversion failed", e);
              throw new MathConverterException("mathoid conversion failed");
          } catch (ParserConfigurationException | IOException e) {
              logger.error("enriched mathml conversion failed", e);
              throw new MathConverterException("enriched mathml conversion failed");
          } catch (Exception e) {
              logger.error("pmml conversion failed", e);
              throw new MathConverterException("pmml conversion failed");
          }
      }
docs: Converts from pmml to enriched Math and then to well formed MathML
  that contains pMML and cMML semantics. <br/>
  This method relies on the EnrichedMathMLTransformer
  which is prone to error. In the future this should be worked on.
  
  @param mathEle math node
  @return well formatted mathml
  @throws MathConverterException conversion failed, simple info text included
  @throws TransformerException   conversion between formats failed