docs: @FFDCIgnore(Throwable.class)
      private static Object createEclipseNamespaceMapper(Class<?> mcls, Map<String, String> map) {
          ASMHelper helper = new ASMHelper();
          String className = "org.apache.cxf.jaxb.EclipseNamespaceMapper";
          String slashedName = "org/apache/cxf/jaxb/EclipseNamespaceMapper";
          Class<?> cls = helper.findClass(className, JAXBUtils.class);
  
          if (cls == null) {
              ClassWriter cw = helper.createClassWriter();
              if (cw == null) {
                  return null;
              }
              String superName = "org/eclipse/persistence/internal/oxm/record/namespaces/MapNamespacePrefixMapper";
              FieldVisitor fv;
              MethodVisitor mv;
              cw.visit(Opcodes.V1_6,
                       Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER,
                       slashedName, null,
                       superName, null);
  
              cw.visitSource("EclipseNamespaceMapper.java", null);
  
              fv = cw.visitField(Opcodes.ACC_PRIVATE, "nsctxt", "[Ljava/lang/String;", null, null);
              fv.visitEnd();
  
  
              mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "(Ljava/util/Map;)V",
                                  "(Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V", null);
              mv.visitCode();
              Label l0 = helper.createLabel();
              mv.visitLabel(l0);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitVarInsn(Opcodes.ALOAD, 1);
              mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
                                 superName, "<init>", "(Ljava/util/Map;)V", false);
              Label l1 = helper.createLabel();
              mv.visitLabel(l1);
              mv.visitInsn(Opcodes.RETURN);
              Label l2 = helper.createLabel();
              mv.visitLabel(l2);
              mv.visitMaxs(2, 2);
              mv.visitEnd();
  
  
              mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "setContextualNamespaceDecls", "([Ljava/lang/String;)V",
                                  null, null);
              mv.visitCode();
              l0 = helper.createLabel();
              mv.visitLabel(l0);
              mv.visitLineNumber(47, l0);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitVarInsn(Opcodes.ALOAD, 1);
              mv.visitFieldInsn(Opcodes.PUTFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
              l1 = helper.createLabel();
              mv.visitLabel(l1);
              mv.visitLineNumber(48, l1);
              mv.visitInsn(Opcodes.RETURN);
              l2 = helper.createLabel();
              mv.visitLabel(l2);
              mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0, l2, 0);
              mv.visitLocalVariable("contextualNamespaceDecls", "[Ljava/lang/String;", null, l0, l2, 1);
              mv.visitMaxs(2, 2);
              mv.visitEnd();
  
              mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getContextualNamespaceDecls", "()[Ljava/lang/String;", null, null);
              mv.visitCode();
              l0 = helper.createLabel();
              mv.visitLabel(l0);
              mv.visitLineNumber(51, l0);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
              mv.visitInsn(Opcodes.ARETURN);
              l1 = helper.createLabel();
  
              mv.visitLabel(l1);
              mv.visitLocalVariable("this", "L" + slashedName + ";", null, l0, l1, 0);
  
              mv.visitMaxs(1, 1);
              mv.visitEnd();
  
  
              mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "getPreDeclaredNamespaceUris", "()[Ljava/lang/String;", null, null);
              mv.visitCode();
              l0 = helper.createLabel();
              mv.visitLabel(l0);
              mv.visitLineNumber(1036, l0);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitMethodInsn(Opcodes.INVOKESPECIAL,
                                 superName,
                                 "getPreDeclaredNamespaceUris", "()[Ljava/lang/String;", false);
              mv.visitVarInsn(Opcodes.ASTORE, 1);
              l1 = helper.createLabel();
              mv.visitLabel(l1);
              mv.visitLineNumber(1037, l1);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
              l2 = helper.createLabel();
              mv.visitJumpInsn(Opcodes.IFNONNULL, l2);
              Label l3 = helper.createLabel();
              mv.visitLabel(l3);
              mv.visitLineNumber(1038, l3);
              mv.visitVarInsn(Opcodes.ALOAD, 1);
              mv.visitInsn(Opcodes.ARETURN);
              mv.visitLabel(l2);
              mv.visitLineNumber(1040, l2);
              mv.visitFrame(Opcodes.F_APPEND, 1, new Object[] {"[Ljava/lang/String;"}, 0, null);
              mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList");
              mv.visitInsn(Opcodes.DUP);
              mv.visitVarInsn(Opcodes.ALOAD, 1);
              mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/util/Arrays", "asList",
                                 "([Ljava/lang/Object;)Ljava/util/List;", false);
              mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "(Ljava/util/Collection;)V", false);
              mv.visitVarInsn(Opcodes.ASTORE, 2);
              Label l4 = helper.createLabel();
              mv.visitLabel(l4);
              mv.visitLineNumber(1041, l4);
              mv.visitInsn(Opcodes.ICONST_1);
              mv.visitVarInsn(Opcodes.ISTORE, 3);
              Label l5 = helper.createLabel();
              mv.visitLabel(l5);
              Label l6 = helper.createLabel();
              mv.visitJumpInsn(Opcodes.GOTO, l6);
              Label l7 = helper.createLabel();
              mv.visitLabel(l7);
              mv.visitLineNumber(1042, l7);
              mv.visitFrame(Opcodes.F_APPEND, 2, new Object[] {"java/util/List", Opcodes.INTEGER}, 0, null);
              mv.visitVarInsn(Opcodes.ALOAD, 2);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitFieldInsn(Opcodes.GETFIELD, slashedName, "nsctxt", "[Ljava/lang/String;");
              mv.visitVarInsn(Opcodes.ILOAD, 3);
              mv.visitInsn(Opcodes.AALOAD);
              mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "remove", "(Ljava/lang/Object;)Z", true);
              mv.visitInsn(Opcodes.POP);
              Label l8 = helper.createLabel();
              mv.visitLabel(l8);
              mv.visitLineNumber(1041, l8);
              mv.visitIincInsn(3, 2);
              mv.visitLabel(l6);
              mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
              mv.visitVarInsn(Opcodes.ILOAD, 3);
              mv.visitVarInsn(Opcodes.ALOAD, 0);
              mv.visitFieldInsn(Opcodes.GETFIELD,
                                slashedName,
                                "nsctxt", "[Ljava/lang/String;");
              mv.visitInsn(Opcodes.ARRAYLENGTH);
              mv.visitJumpInsn(Opcodes.IF_ICMPLT, l7);
              Label l9 = helper.createLabel();
              mv.visitLabel(l9);
              mv.visitLineNumber(1044, l9);
              mv.visitVarInsn(Opcodes.ALOAD, 2);
              mv.visitVarInsn(Opcodes.ALOAD, 2);
              mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "size", "()I", true);
              mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String");
              mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List",
                                 "toArray", "([Ljava/lang/Object;)[Ljava/lang/Object;", true);
              mv.visitTypeInsn(Opcodes.CHECKCAST, "[Ljava/lang/String;");
              mv.visitInsn(Opcodes.ARETURN);
              Label l10 = helper.createLabel();
              mv.visitLabel(l10);
              mv.visitLocalVariable("this", "L" + slashedName + ";",
                                    null, l0, l10, 0);
              mv.visitLocalVariable("sup", "[Ljava/lang/String;", null, l1, l10, 1);
              mv.visitLocalVariable("s", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", l4, l10, 2);
              mv.visitLocalVariable("x", "I", null, l5, l9, 3);
              mv.visitMaxs(3, 4);
              mv.visitEnd();
  
              cw.visitEnd();
  
              byte[] bts = cw.toByteArray();
              cls = helper.loadClass(className,
                                     mcls, bts);
          }
          try {
              return cls.getConstructor(Map.class).newInstance(map);
          } catch (Throwable e) {
              e.printStackTrace();
              return null;
          }
      }