Revert "Revert optimization removal (#1352)" (#1533)

* Revert "Revert optimization removal (#1352)"

This reverts commit 263e92e2da1a0e934510a61f7525b1f310d13924.
diff --git a/jaxb-ri/pom.xml b/jaxb-ri/pom.xml
index 2adfc55..57ce5cd 100644
--- a/jaxb-ri/pom.xml
+++ b/jaxb-ri/pom.xml
@@ -328,11 +328,6 @@
                         </dependency>
                     </dependencies>
                 </plugin>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-failsafe-plugin</artifactId>
-                    <version>3.0.0-M5</version>
-                </plugin>
             </plugins>
         </pluginManagement>
 
diff --git a/jaxb-ri/runtime/impl/pom.xml b/jaxb-ri/runtime/impl/pom.xml
index 71532da..3553a3d 100644
--- a/jaxb-ri/runtime/impl/pom.xml
+++ b/jaxb-ri/runtime/impl/pom.xml
@@ -157,37 +157,6 @@
                     <reuseForks>true</reuseForks>
                 </configuration>
             </plugin>
-
-            <!-- Run tests on multi-release jar -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>integration-test</goal>
-                            <goal>verify</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <trimStackTrace>false</trimStackTrace>
-                    <systemProperties>
-                        <property>
-                            <name>java.util.logging.config.file</name>
-                            <value>logging.properties</value>
-                        </property>
-                    </systemProperties>
-                    <argLine>
-                        --add-opens java.base/java.lang=org.glassfish.runtime
-                        --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2=jakarta.xml.bind
-                        --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2.schemagen=jakarta.xml.bind
-                    </argLine>
-                    <includes>
-                        <include>**/*TestMultiRelease.java</include>
-                    </includes>
-                </configuration>
-            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
deleted file mode 100644
index 03615f4..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-/**
- * Stub version of {@link AccessorInjector} for java versions >= 9
- *
- * @author Daniel Kec
- */
-class AccessorInjector {
-
-    protected static final boolean noOptimize = true;
-
-    public static Class<?> prepare(
-            Class beanClass, String templateClassName, String newClassName, String... replacements) {
-        return null;
-    }
-
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java
deleted file mode 100644
index d7fcaed..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-/**
- * Stub version of {@link Injector} for java versions >= 9
- *
- * @author Daniel Kec
- */
-final class Injector {
-
-    /**
-     * Injects a new class into the given class loader.
-     *
-     * @return null
-     * if it fails to inject.
-     */
-    static Class inject(ClassLoader cl, String className, byte[] image) {
-        return null;
-    }
-
-    /**
-     * Returns the already injected class, or null.
-     */
-    static Class find(ClassLoader cl, String className) {
-        return null;
-    }
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
deleted file mode 100644
index 84b4213..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-
-import java.util.logging.Logger;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Field;
-
-/**
- * Stub version of {@link org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory} for java versions >= 9
- *
- * @author Daniel Kec
- */
-public abstract class OptimizedAccessorFactory {
-    private OptimizedAccessorFactory() {} // no instantiation please
-
-    private static final Logger logger = Logger.getLogger(org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory.class.getName());
-
-
-    public static <B, V> Accessor<B, V> get(Method param1, Method param2) {
-        return getStub();
-    }
-
-    public static <B, V> Accessor<B, V> get(Field param) {
-        return getStub();
-    }
-
-    private static <B, V> Accessor<B, V> getStub(){
-        logger.finer("Optimization is not available since java 9");
-        return null;
-    }
-
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
deleted file mode 100644
index dabb5f7..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor;
-
-import java.util.logging.Logger;
-
-/**
- * Stub version of {@link org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory} for java versions >= 9
- *
- * @author Daniel Kec
- */
-public abstract class OptimizedTransducedAccessorFactory {
-    private OptimizedTransducedAccessorFactory() {} // no instantiation please
-
-    private static final Logger logger = Logger.getLogger(org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory.class.getName());
-
-    public static final TransducedAccessor get(RuntimePropertyInfo prop) {
-        logger.finer("Optimization is not available since java 9");
-        return null;
-    }
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java
index 45826e6..760ac58 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java
@@ -95,10 +95,6 @@
         return false;
     }
 
-    public final boolean isDefault() {
-        return true;
-    }
-
     public void declareNamespace(T o, XMLSerializer w) throws AccessorException {
     }
 
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java
index 7e87f84..fb85e4c 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java
@@ -330,10 +330,6 @@
             return xacc.useNamespace();
         }
 
-        public boolean isDefault() {
-            return false;
-        }
-
         public void declareNamespace(BeanT bean, XMLSerializer w) throws AccessorException {
             try {
                 xacc.declareNamespace(bean,w);
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java
index 9ddb376..11f7af1 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java
@@ -93,10 +93,6 @@
         return new QName[]{getTypeName()};
     }
 
-    public boolean isDefault() {
-        return false;
-    }
-
     @Override
     public Class getClazz() {
         return clazz;
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
index 8ac3ab4..5b2ee93 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
@@ -1,5 +1,9 @@
 /*
+<<<<<<< HEAD:jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
  * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+=======
+ * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+>>>>>>> parent of 263e92e (Revert optimization removal (#1352)):jaxb-ri/runtime/impl/src/main/java/com/sun/xml/bind/v2/runtime/FilterTransducer.java
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -30,12 +34,6 @@
         this.core = core;
     }
 
-    public final boolean isDefault() {
-        // this must be used as a decorating transducer,
-        // so it may never be default.
-        return false;
-    }
-
     public boolean useNamespace() {
         return core.useNamespace();
     }
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java
index ce6c54b..12c382f 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java
@@ -12,8 +12,7 @@
 
 import com.sun.istack.NotNull;
 import org.glassfish.jaxb.runtime.api.AccessorException;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory;
+
 import jakarta.xml.bind.annotation.XmlValue;
 import org.xml.sax.SAXException;
 
@@ -22,7 +21,6 @@
 import javax.xml.stream.XMLStreamException;
 import java.io.IOException;
 
-
 /**
  * Responsible for converting a Java object to a lexical representation
  * and vice versa.
@@ -38,14 +36,6 @@
 public interface Transducer<ValueT> {
 
     /**
-     * If this {@link Transducer} is the default transducer for the <code>ValueT</code>,
-     * this method returns true.
-     *
-     * Used exclusively by {@link OptimizedTransducedAccessorFactory#get(RuntimePropertyInfo)}
-     */
-    boolean isDefault();
-
-    /**
      * If true, this {@link Transducer} doesn't declare any namespace,
      * and therefore {@link #declareNamespace(Object, XMLSerializer)} is no-op.
      *
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java
index 48df4fc..60a7f1a 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java
@@ -16,7 +16,6 @@
 import org.glassfish.jaxb.core.v2.model.core.Adapter;
 import org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder;
 import org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory;
 import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Loader;
 import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Receiver;
 import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext;
@@ -242,14 +241,6 @@
 
         @Override
         public Accessor<BeanT, ValueT> optimize(JAXBContextImpl context) {
-            if (context != null && context.fastBoot) {
-                // let's not waste time on doing this for the sake of faster boot.
-                return this;
-            }
-            Accessor<BeanT, ValueT> acc = OptimizedAccessorFactory.get(f);
-            if (acc != null) {
-                return acc;
-            }
             return this;
         }
     }
@@ -356,20 +347,6 @@
 
         @Override
         public Accessor<BeanT, ValueT> optimize(JAXBContextImpl context) {
-            if (getter == null || setter == null) {
-                // if we aren't complete, OptimizedAccessor won't always work
-                return this;
-            }
-            if (context != null && context.fastBoot) {
-                // let's not waste time on doing this for the sake of faster boot.
-                return this;
-            }
-
-            Accessor<BeanT, ValueT> acc = OptimizedAccessorFactory.get(getter, setter);
-            if (acc != null) {
-                return acc;
-            }
-
             return this;
         }
     }
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java
index 12927ab..0cce148 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java
@@ -23,7 +23,6 @@
 import org.glassfish.jaxb.runtime.v2.runtime.Name;
 import org.glassfish.jaxb.runtime.v2.runtime.Transducer;
 import org.glassfish.jaxb.runtime.v2.runtime.XMLSerializer;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory;
 import org.glassfish.jaxb.core.v2.runtime.unmarshaller.LocatorEx;
 import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Patcher;
 import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext;
@@ -132,13 +131,6 @@
         if(prop.id()==ID.IDREF)
             return new IDREFTransducedAccessorImpl(prop.getAccessor());
 
-        if (xducer.isDefault() && context != null && !context.fastBoot) {
-            TransducedAccessor xa = OptimizedTransducedAccessorFactory.get(prop);
-            if (xa != null) {
-                return xa;
-            }
-        }
-
         if(xducer.useNamespace())
             return new CompositeContextDependentTransducedAccessorImpl( context, xducer, prop.getAccessor() );
         else
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
index 4447c10..c3f72b0 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
@@ -14,7 +14,6 @@
 import org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor;
 
 import java.io.InputStream;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
@@ -33,41 +32,6 @@
     }
 
     /**
-     * Loads the optimized class and returns it.
-     *
-     * @return null
-     *      if it fails for some reason.
-     */
-    public static Class<?> prepare(
-            Class beanClass, String templateClassName, String newClassName, String... replacements ) {
-
-        if(noOptimize)
-            return null;
-
-        try {
-            ClassLoader cl = SecureLoader.getClassClassLoader(beanClass);
-            if(cl==null)    return null;    // how do I inject classes to this "null" class loader? for now, back off.
-
-            Class c = Injector.find(cl,newClassName);
-            if (c==null) {
-                byte[] image = tailor(templateClassName,newClassName,replacements);
-                if (image==null) {
-                    return null;
-                }
-                c = Injector.inject(cl,newClassName,image);
-                if (c == null) {
-                    Injector.find(cl, newClassName);
-                }
-            }
-            return c;
-        } catch(SecurityException e) {
-            // we don't have enough permission to do this
-            logger.log(Level.INFO,"Unable to create an optimized TransducedAccessor ",e);
-            return null;
-        }
-    }
-
-    /**
      * Customizes a class file by replacing constant pools.
      *
      * @param templateClassName
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
deleted file mode 100644
index 39c6cf4..0000000
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.core.v2.runtime.RuntimeUtil;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor.toVMClassName;
-import static org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor.toVMTypeName;
-
-/**
- * @author Kohsuke Kawaguchi
- */
-public abstract class OptimizedAccessorFactory {
-    private OptimizedAccessorFactory() {} // no instanciation please
-
-    public static final boolean noOptimization = Boolean.getBoolean(OptimizedAccessorFactory.class.getName()+".noOptimization");
-
-    private static final Logger logger = Logger.getLogger(OptimizedAccessorFactory.class.getName());
-
-    private static final String fieldTemplateName;
-    private static final String methodTemplateName;
-
-    static {
-        String s = FieldAccessor_Byte.class.getName();
-        fieldTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
-
-        s = MethodAccessor_Byte.class.getName();
-        methodTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
-    }
-
-    /**
-     * Gets the optimized {@link Accessor} that accesses the given getter/setter.
-     *
-     * @return null
-     *      if for some reason it fails to create an optimized version.
-     */
-    public static final <B,V> Accessor<B,V> get(Method getter, Method setter) {
-        if(noOptimization){
-            return null;
-        }
-
-        // make sure the method signatures are what we expect
-        if(getter.getParameterTypes().length!=0)
-            return null;
-        Class<?>[] sparams = setter.getParameterTypes();
-        if(sparams.length!=1)
-            return null;
-        if(sparams[0]!=getter.getReturnType())
-            return null;
-        if(setter.getReturnType()!=Void.TYPE)
-            return null;
-        if(getter.getDeclaringClass()!=setter.getDeclaringClass())
-            return null;
-        if(Modifier.isPrivate(getter.getModifiers()) || Modifier.isPrivate(setter.getModifiers()))
-            // we can't access private fields
-            return null;
-
-        Class t = sparams[0];
-        String typeName = t.getName().replace('.','_');
-        if (t.isArray()) {
-            typeName = "AOf_";
-            String compName = t.getComponentType().getName().replace('.','_');
-            while (compName.startsWith("[L")) {
-                compName = compName.substring(2);
-                typeName += "AOf_";
-            }
-            typeName = typeName + compName;
-        }
-
-        String newClassName = toVMClassName(getter.getDeclaringClass())+"$JaxbAccessorM_"+getter.getName()+'_'+setter.getName()+'_'+typeName;
-        Class opt;
-
-        if(t.isPrimitive())
-            opt = AccessorInjector.prepare( getter.getDeclaringClass(),
-                    methodTemplateName+RuntimeUtil.primitiveToBox.get(t).getSimpleName(),
-                    newClassName,
-                    toVMClassName(Bean.class),
-                    toVMClassName(getter.getDeclaringClass()),
-                    "get_"+t.getName(),
-                    getter.getName(),
-                    "set_"+t.getName(),
-                    setter.getName());
-        else
-            opt = AccessorInjector.prepare( getter.getDeclaringClass(),
-                    methodTemplateName+"Ref",
-                    newClassName,
-                    toVMClassName(Bean.class),
-                    toVMClassName(getter.getDeclaringClass()),
-                    toVMClassName(Ref.class),
-                    toVMClassName(t),
-                    "()"+toVMTypeName(Ref.class),
-                    "()"+toVMTypeName(t),
-                    '('+toVMTypeName(Ref.class)+")V",
-                    '('+toVMTypeName(t)+")V",
-                    "get_ref",
-                    getter.getName(),
-                    "set_ref",
-                    setter.getName());
-
-        if(opt==null)
-            return null;
-
-        Accessor<B,V> acc = instanciate(opt);
-        if (acc!=null) {
-            if (logger.isLoggable(Level.FINE)) {
-                logger.log(Level.FINE, "Using optimized Accessor for {0} and {1}", new Object[]{getter, setter});
-            }
-        }
-        return acc;
-    }
-
-
-    /**
-     * Gets the optimized {@link Accessor} that accesses the given field.
-     *
-     * @return null
-     *      if for some reason it fails to create an optimized version.
-     */
-    public static final <B,V> Accessor<B,V> get(Field field) {
-        if(noOptimization){
-            return null;
-        }
-
-        int mods = field.getModifiers();
-        if(Modifier.isPrivate(mods) || Modifier.isFinal(mods))
-            // we can't access private fields
-            return null;
-
-        String newClassName = toVMClassName(field.getDeclaringClass())+"$JaxbAccessorF_"+field.getName();
-
-        Class opt;
-
-        if(field.getType().isPrimitive())
-            opt = AccessorInjector.prepare( field.getDeclaringClass(),
-                    fieldTemplateName+RuntimeUtil.primitiveToBox.get(field.getType()).getSimpleName(),
-                    newClassName,
-                    toVMClassName(Bean.class),
-                    toVMClassName(field.getDeclaringClass()),
-                    "f_"+field.getType().getName(),
-                    field.getName() );
-        else
-            opt = AccessorInjector.prepare( field.getDeclaringClass(),
-                    fieldTemplateName+"Ref",
-                    newClassName,
-                    toVMClassName(Bean.class),
-                    toVMClassName(field.getDeclaringClass()),
-                    toVMClassName(Ref.class),
-                    toVMClassName(field.getType()),
-                    toVMTypeName(Ref.class),
-                    toVMTypeName(field.getType()),
-                    "f_ref",
-                    field.getName() );
-
-        if(opt==null)
-            return null;
-
-        Accessor<B,V> acc = instanciate(opt);
-        if (acc!=null) {
-            if (logger.isLoggable(Level.FINE)) {
-                logger.log(Level.FINE, "Using optimized Accessor for {0}", field);
-            }
-        }
-        return acc;
-    }
-
-    private static <B,V> Accessor<B,V> instanciate(Class opt) {
-        try {
-            return (Accessor<B,V>)opt.newInstance();
-        } catch (InstantiationException e) {
-            logger.log(Level.INFO,"failed to load an optimized Accessor",e);
-        } catch (IllegalAccessException e) {
-            logger.log(Level.INFO,"failed to load an optimized Accessor",e);
-        } catch (SecurityException e) {
-            logger.log(Level.INFO,"failed to load an optimized Accessor",e);
-        } catch (ClassCastException e) {
-            logger.log(Level.FINE,"failed to cast optimized Accessor " +
-                    "created by repackaged jaxb "+opt,e);
-        }
-        return null;
-    }
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
deleted file mode 100644
index e66a891..0000000
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.core.v2.model.core.TypeInfo;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimeClassInfo;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor.toVMClassName;
-
-/**
- * Prepares optimized {@link TransducedAccessor} from templates.
- *
- * @author Kohsuke Kawaguchi
- */
-public abstract class OptimizedTransducedAccessorFactory {
-    private OptimizedTransducedAccessorFactory() {} // no instantiation please
-
-    // http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#75929
-    // "same runtime package"
-
-    private static final Logger logger = Logger.getLogger(OptimizedTransducedAccessorFactory.class.getName());
-
-    private static final String fieldTemplateName;
-    private static final String methodTemplateName;
-
-    static {
-        String s = TransducedAccessor_field_Byte.class.getName();
-        fieldTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
-
-        s = TransducedAccessor_method_Byte.class.getName();
-        methodTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
-    }
-
-    /**
-     * Gets the optimized {@link TransducedAccessor} if possible.
-     *
-     * @return null
-     *      if for some reason it fails to create an optimized version.
-     */
-    public static final TransducedAccessor get(RuntimePropertyInfo prop) {
-        if(OptimizedAccessorFactory.noOptimization){
-            return null;
-        }
-
-        Accessor acc = prop.getAccessor();
-
-        // consider using an optimized TransducedAccessor implementations.
-        Class opt=null;
-
-        TypeInfo<Type,Class> parent = prop.parent();
-        if(!(parent instanceof RuntimeClassInfo))
-            return null;
-        
-        Class dc = ((RuntimeClassInfo)parent).getClazz();
-        String newClassName = toVMClassName(dc)+"_JaxbXducedAccessor_"+prop.getName();
-
-
-        if(acc instanceof Accessor.FieldReflection) {
-            // TODO: we also need to make sure that the default xducer is used.
-            Accessor.FieldReflection racc = (Accessor.FieldReflection) acc;
-            Field field = racc.f;
-
-            int mods = field.getModifiers();
-            if(Modifier.isPrivate(mods) || Modifier.isFinal(mods))
-                // we can't access private fields.
-                // TODO: think about how to improve this case
-                return null;
-
-            Class<?> t = field.getType();
-            if(t.isPrimitive())
-                opt = AccessorInjector.prepare( dc,
-                    fieldTemplateName+suffixMap.get(t),
-                    newClassName,
-                    toVMClassName(Bean.class),
-                    toVMClassName(dc),
-                    "f_"+t.getName(),
-                    field.getName() );
-        }
-
-        if(acc.getClass()==Accessor.GetterSetterReflection.class) {
-            Accessor.GetterSetterReflection gacc = (Accessor.GetterSetterReflection) acc;
-
-            if(gacc.getter==null || gacc.setter==null)
-                return null;    // incomplete
-
-            Class<?> t = gacc.getter.getReturnType();
-
-            if(Modifier.isPrivate(gacc.getter.getModifiers())
-            || Modifier.isPrivate(gacc.setter.getModifiers()))
-                // we can't access private methods.
-                return null;
-
-
-            if(t.isPrimitive())
-                opt = AccessorInjector.prepare( dc,
-                    methodTemplateName+suffixMap.get(t),
-                    newClassName,
-                    toVMClassName(Bean.class),
-                    toVMClassName(dc),
-                    "get_"+t.getName(),
-                    gacc.getter.getName(),
-                    "set_"+t.getName(),
-                    gacc.setter.getName());
-        }
-
-        if(opt==null)
-            return null;
-
-        logger.log(Level.FINE,"Using optimized TransducedAccessor for "+prop.displayName());
-
-
-        try {
-            return (TransducedAccessor)opt.newInstance();
-        } catch (InstantiationException e) {
-            logger.log(Level.INFO,"failed to load an optimized TransducedAccessor",e);
-        } catch (IllegalAccessException e) {
-            logger.log(Level.INFO,"failed to load an optimized TransducedAccessor",e);
-        } catch (SecurityException e) {
-            logger.log(Level.INFO,"failed to load an optimized TransducedAccessor",e);
-        }
-        return null;
-    }
-
-    private static final Map<Class,String> suffixMap = new HashMap<Class, String>();
-
-    static {
-        suffixMap.put(Byte.TYPE,"Byte");
-        suffixMap.put(Short.TYPE,"Short");
-        suffixMap.put(Integer.TYPE,"Integer");
-        suffixMap.put(Long.TYPE,"Long");
-        suffixMap.put(Boolean.TYPE,"Boolean");
-        suffixMap.put(Float.TYPE,"Float");
-        suffixMap.put(Double.TYPE,"Double");
-    }
-
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/AbstractTestMultiRelease.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/AbstractTestMultiRelease.java
deleted file mode 100644
index 7dee033..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/AbstractTestMultiRelease.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.test;
-
-import org.junit.Assume;
-import org.junit.Rule;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-
-/**
- * Tools for testing multi-release jar, makes possible to skip tests marked for java version above current one.
- *
- * @author Daniel Kec
- * @see SinceJava9
- */
-public abstract class AbstractTestMultiRelease {
-
-    @Rule
-    public TestWatcher javaVersionWatcher = new TestWatcher() {
-        @Override
-        protected void starting(Description description) {
-            if (description.getAnnotation(SinceJava9.class) != null) {
-                if (!isAboveOrEqualJava9()) {
-                    Assume.assumeTrue("Skipping, test is applicable since java 9 and higher.", false);
-                }
-            }
-            super.starting(description);
-        }
-    };
-
-    protected boolean isAboveOrEqualJava9() {
-        try {
-            //Runtime#version is available since java 9
-            Runtime.class.getMethod("version");
-        } catch (NoSuchMethodException e) {
-            return false;
-        }
-        return true;
-    }
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/SinceJava9.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/SinceJava9.java
deleted file mode 100644
index 6cd66ad..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/SinceJava9.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.test;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marker for test methods which are assumed to be tested only on Java 9 and higher
- *
- * @see AbstractTestMultiRelease
- * @author Daniel Kec
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.METHOD})
-public @interface SinceJava9 {
-
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/ForeignAccessorTest.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/ForeignAccessorTest.java
deleted file mode 100644
index a718754..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/ForeignAccessorTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import jakarta.xml.bind.annotation.XmlAccessType;
-import jakarta.xml.bind.annotation.XmlAccessorType;
-import jakarta.xml.bind.annotation.XmlRootElement;
-import org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-import org.junit.Test;
-
-public class ForeignAccessorTest {
-
-    /**
-     * Foreign accessor shouldn't throw ClassCastException, just skip optimization.
-     */
-    @Test
-    public void foreignAccessor() throws NoSuchFieldException{
-        String newClassName = EntityWithForeignAccessor.class.getName().replace('.','/') + "$JaxbAccessorF_author";
-        Class<?> foreignAccessor = AccessorInjector.prepare(EntityWithForeignAccessor.class,
-                ClassTailor.toVMClassName(ForeignAccessorTest.FieldAccessor_Ref.class),
-                newClassName);
-        assertNotNull(foreignAccessor);
-
-        Accessor<Object, Object> accessor = OptimizedAccessorFactory.get(EntityWithForeignAccessor.class.getDeclaredField("author"));
-        assertNull(accessor);
-    }
-    
-    @Test
-    public void knownAccessor() throws NoSuchFieldException {
-        Accessor<Object, Object> accessor = OptimizedAccessorFactory.get(EntityWithKnownAccessor.class.getDeclaredField("author"));
-        assertNotNull(accessor);
-    }
-
-    @XmlRootElement
-    @XmlAccessorType(XmlAccessType.FIELD)
-    static class EntityWithKnownAccessor {
-        String author;
-    }
-
-    @XmlRootElement
-    @XmlAccessorType(XmlAccessType.FIELD)
-    static class EntityWithForeignAccessor {
-        String author;
-    }
-
-    /**
-     * Test template doesn't extend accessor intentionally.
-     */
-    public static class FieldAccessor_Ref /*extends Accessor*/ {
-        public FieldAccessor_Ref() {
-           // super(Ref.class);
-        }
-
-        public Object get(Object bean) {
-            return ((Bean)bean).f_ref;
-        }
-
-        public void set(Object bean, Object value) {
-            ((Bean)bean).f_ref = (Ref)value;
-        }
-    }
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTest.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTest.java
deleted file mode 100644
index e8cda9a..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import jakarta.xml.bind.JAXBContext;
-import jakarta.xml.bind.JAXBException;
-import jakarta.xml.bind.Unmarshaller;
-import jakarta.xml.bind.annotation.XmlRootElement;
-import jakarta.xml.bind.annotation.XmlTransient;
-import java.io.StringReader;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.VarHandle;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
-/**
- * Test flag for disabling optimization
- * org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory.noOptimization=true/false
- *
- * @author Daniel Kec
- */
-public class OptimizationTest {
-
-    private static final String EXPECTED_ACCESSOR_CLASS_REF = Book.class.getName() + "$JaxbAccessorM_getAuthor_setAuthor_java_lang_String";
-    private static final String OPTIMIZATION_ON = "AUTHOR_EXPECTING_OPTIMIZATION_ON";
-    private static final String OPTIMIZATION_OFF = "AUTHOR_EXPECTING_OPTIMIZATION_OFF";
-    private static final VarHandle MODIFIERS;
-
-    static {
-        try {
-            MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(Field.class, MethodHandles.lookup());
-            MODIFIERS = lookup.findVarHandle(Field.class, "modifiers", int.class);
-        } catch (IllegalAccessException | NoSuchFieldException ex) {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    @Test
-    public void checkNoOptimizationFlagFalse() throws JAXBException {
-        Book book = unmarshal(OPTIMIZATION_ON);
-        Assert.assertTrue(book.errorMessage, book.errorMessage == null);
-        Assert.assertEquals(OPTIMIZATION_ON, book.getAuthor());
-    }
-
-    @Test
-    public void checkNoOptimizationFlagTrue() throws JAXBException, NoSuchFieldException, IllegalAccessException {
-        try {
-            setNoOptimizationFlag(true);
-            Book book = unmarshal(OPTIMIZATION_OFF);
-            Assert.assertTrue(book.errorMessage, book.errorMessage == null);
-            Assert.assertEquals(OPTIMIZATION_OFF, book.getAuthor());
-        } finally {
-            setNoOptimizationFlag(false);
-        }
-    }
-
-    private Book unmarshal(String autor) throws JAXBException {
-        JAXBContext context = JAXBContext.newInstance(Book.class);
-        Unmarshaller unmarshaller = context.createUnmarshaller();
-        return (Book) unmarshaller.unmarshal(new StringReader(
-                String.format("<book><author>%s</author></book>", autor)));
-    }
-
-    private void setNoOptimizationFlag(boolean flag) throws NoSuchFieldException, IllegalAccessException {
-        Field noOptimizationField = OptimizedAccessorFactory.class.getField("noOptimization");
-        noOptimizationField.setAccessible(true);
-        if (Modifier.isFinal(noOptimizationField.getModifiers())) {
-            MODIFIERS.set(noOptimizationField, noOptimizationField.getModifiers() & ~Modifier.FINAL);
-        }
-        noOptimizationField.setBoolean(OptimizedAccessorFactory.class, true);
-    }
-
-    @XmlRootElement
-    static class Book {
-        private String author;
-
-        @XmlTransient
-        String errorMessage = null;
-
-        public String getAuthor() {
-            return author;
-        }
-
-        public void setAuthor(String author) {
-            String artificialInnerClass = null;
-            StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
-            for (StackTraceElement el : stackTrace) {
-                System.out.println(el.toString());
-                if (el.getClassName().equals(EXPECTED_ACCESSOR_CLASS_REF)) {
-                    artificialInnerClass = el.getClassName();
-                    break;
-                }
-            }
-
-            if (author.equals(OPTIMIZATION_OFF) && artificialInnerClass != null) {
-                this.errorMessage = String.format("Artificial accessor class detected %s", artificialInnerClass);
-            } else if (author.equals(OPTIMIZATION_ON) && artificialInnerClass == null) {
-                this.errorMessage = String.format("Expected artificial accessor class not found: %s", EXPECTED_ACCESSOR_CLASS_REF);
-            }
-            this.author = author;
-        }
-    }
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTestMultiRelease.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTestMultiRelease.java
deleted file mode 100644
index 39931fc..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTestMultiRelease.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.runtime.test.AbstractTestMultiRelease;
-import org.glassfish.jaxb.runtime.test.SinceJava9;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Field;
-
-/**
- * Test multi release for optimization feature,
- * Feature needs to be disabled since java 9.
- *
- * @author Daniel Kec
- */
-public class OptimizationTestMultiRelease extends AbstractTestMultiRelease {
-
-    @SuppressWarnings("WeakerAccess")
-    public static String TEST_FIELD = "TEST_FIELD";
-
-    @Test
-    @SinceJava9
-    public void testStubbedAccessorInjector() {
-        //Stubbed version doesn't mind null param
-        Assert.assertNull("Injector should always return null since Java 9",
-                AccessorInjector.prepare(null, null, null, null));
-    }
-
-    @Test
-    @SinceJava9
-    public void testStubbedInjector() {
-        //Stubbed version doesn't mind null param
-        Assert.assertNull("Injector should always return null since Java 9",
-                Injector.find(null, null));
-    }
-
-    @Test
-    @SinceJava9
-    public void testStubbedOptimizedAccessorFactory() throws NoSuchFieldException {
-        Field field = this.getClass().getDeclaredField(TEST_FIELD);
-        Assert.assertNull("OptimizedAccessorFactory should always return null since Java 9", OptimizedAccessorFactory.get(field));
-    }
-
-    @Test
-    @SinceJava9
-    @SuppressWarnings("ConstantConditions")
-    public void testStubbedOptimizedTransducedAccessorFactory() throws NoSuchFieldException {
-        final String errMessage = "OptimizedTransducedAccessorFactory should always return null since Java 9";
-        try {
-            //Stubbed version doesn't mind null param
-            TransducedAccessor accessor = OptimizedTransducedAccessorFactory.get((RuntimePropertyInfo) null);
-            Assert.assertNull(errMessage, accessor);
-        } catch (NullPointerException npe) {
-            Assert.fail(errMessage);
-        }
-    }
-
-}
diff --git a/jaxb-ri/tools/config/copyright-exclude b/jaxb-ri/tools/config/copyright-exclude
index 79c07a7..eed5c68 100644
--- a/jaxb-ri/tools/config/copyright-exclude
+++ b/jaxb-ri/tools/config/copyright-exclude
@@ -1,7 +1,6 @@
 /MANIFEST.MF
 /META-INF/services/
 /README
-.iml
 .gif
 .jpg
 .png