[682] Correct the fix for 670 and return the type if the type has already been resolved.

Signed-off-by: James R. Perkins <jperkins@ibm.com>
diff --git a/src/main/java/org/eclipse/yasson/internal/ReflectionUtils.java b/src/main/java/org/eclipse/yasson/internal/ReflectionUtils.java
index 47b5187..d83850b 100644
--- a/src/main/java/org/eclipse/yasson/internal/ReflectionUtils.java
+++ b/src/main/java/org/eclipse/yasson/internal/ReflectionUtils.java
@@ -252,7 +252,7 @@
                     }
                 }
                 
-                if (resolvedArgs[i] == null || resolvedArgs[i].equals(typeToResolve)) {
+                if (resolvedArgs[i] == null) {
                     if (typeToSearch instanceof Class) {
                         return Object.class;
                     }
@@ -262,6 +262,10 @@
                                                                         typeToSearch));
                 }
             }
+            // The expected type and the resolved type are the same, simply return the type
+            if (resolvedArgs[i].equals(typeToResolve)) {
+                return typeToResolve;
+            }
             if (resolvedArgs[i] instanceof ParameterizedType) {
                 resolvedArgs[i] = resolveTypeArguments((ParameterizedType) resolvedArgs[i], typeToSearch);
             } else if (unresolvedArg instanceof GenericArrayType) {
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/generics/GenericsTest.java b/src/test/java/org/eclipse/yasson/defaultmapping/generics/GenericsTest.java
index 42eb35a..a8a4a92 100644
--- a/src/test/java/org/eclipse/yasson/defaultmapping/generics/GenericsTest.java
+++ b/src/test/java/org/eclipse/yasson/defaultmapping/generics/GenericsTest.java
@@ -52,6 +52,7 @@
 import org.eclipse.yasson.defaultmapping.generics.model.GenericArrayClass;
 import org.eclipse.yasson.defaultmapping.generics.model.GenericTestClass;
 import org.eclipse.yasson.defaultmapping.generics.model.GenericWithUnboundedWildcardClass;
+import org.eclipse.yasson.defaultmapping.generics.model.ListContainer;
 import org.eclipse.yasson.defaultmapping.generics.model.LowerBoundTypeVariableWithCollectionAttributeClass;
 import org.eclipse.yasson.defaultmapping.generics.model.MultiLevelExtendedGenericTestClass;
 import org.eclipse.yasson.defaultmapping.generics.model.MultipleBoundsContainer;
@@ -516,14 +517,32 @@
     }
 
     @Test
-    public void genericUpperBoundContainer() {
-        final String expectedJson = "{\"tree\":{\"children\":[{\"children\":[],\"name\":\"child\"}],\"name\":\"parent\"}}";
+    public void genericUpperBoundContainer() throws Exception {
+        final String expectedJson = "{\"tree\":{\"children\":[{\"name\":\"child\"}],\"name\":\"parent\"}}";
         final TreeContainer<TreeElement> container = new TreeContainer<>();
         final TreeElement parent = new TreeElement("parent");
         parent.setChildren(List.of(new TreeElement("child")));
         container.setTree(parent);
 
-        assertEquals(expectedJson, defaultJsonb.toJson(container));
+        // Use a new instance of Jsonb to avoid any caching
+        try (var jsonb = JsonbBuilder.create()) {
+            assertEquals(expectedJson, jsonb.toJson(container));
+        }
+
+    }
+
+    @Test
+    public void genericUpperBoundContainerWithListContainer() throws Exception {
+        final String expectedJson = "{\"list\":[{\"children\":[{\"name\":\"child\"}],\"name\":\"parent\"}]}";
+        final ListContainer<TreeElement> container = new ListContainer<>();
+        final TreeElement parent = new TreeElement("parent");
+        parent.setChildren(List.of(new TreeElement("child")));
+        container.setList(List.of(parent));
+
+        // Use a new instance of Jsonb to avoid any caching
+        try (var jsonb = JsonbBuilder.create()) {
+            assertEquals(expectedJson, jsonb.toJson(container));
+        }
 
     }
     
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/ListContainer.java b/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/ListContainer.java
new file mode 100644
index 0000000..44b128f
--- /dev/null
+++ b/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/ListContainer.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2025 IBM, Inc. and/or its affiliates.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0,
+ * or the Eclipse Distribution License v. 1.0 which is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
+ */
+
+package org.eclipse.yasson.defaultmapping.generics.model;
+
+import java.util.List;
+
+/**
+ *
+ * @author <a href="mailto:jperkins@ibm.com">James R. Perkins</a>
+ */
+public class ListContainer<T> {
+
+    private List<T> list;
+
+    public List<T> getList() {
+        return list;
+    }
+
+    public void setList(List<T> list) {
+        this.list = list;
+    }
+
+}
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeElement.java b/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeElement.java
index 8668761..36a7f71 100644
--- a/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeElement.java
+++ b/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeElement.java
@@ -12,16 +12,12 @@
 
 package org.eclipse.yasson.defaultmapping.generics.model;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
  */
-public class TreeElement implements TreeTypeContainer<TreeElement> {
+public class TreeElement extends TreeTypeContainer<TreeElement> {
 
     private final String name;
-    private List<TreeElement> children = new ArrayList<>();
 
     public TreeElement(final String name) {
         this.name = name;
@@ -30,12 +26,4 @@
     public String getName() {
         return name;
     }
-
-    public List<TreeElement> getChildren() {
-        return children;
-    }
-
-    public void setChildren(final List<TreeElement> children) {
-        this.children = children;
-    }
 }
diff --git a/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeTypeContainer.java b/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeTypeContainer.java
index 120ae73..824a5e5 100644
--- a/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeTypeContainer.java
+++ b/src/test/java/org/eclipse/yasson/defaultmapping/generics/model/TreeTypeContainer.java
@@ -17,9 +17,14 @@
 /**
  * @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a>
  */
-public interface TreeTypeContainer<T extends TreeTypeContainer<T>> {
+public class TreeTypeContainer<T extends TreeTypeContainer<T>> {
+    private List<T> children;
 
-    List<T> getChildren();
+    public List<T> getChildren() {
+        return children;
+    }
 
-    void setChildren(List<T> children);
+    public void setChildren(final List<T> children) {
+        this.children = children;
+    }
 }