feat: add support for virtual attributes on records
diff --git a/src/main/java/org/eclipse/yasson/internal/ClassParser.java b/src/main/java/org/eclipse/yasson/internal/ClassParser.java
index b63dc00..793677a 100644
--- a/src/main/java/org/eclipse/yasson/internal/ClassParser.java
+++ b/src/main/java/org/eclipse/yasson/internal/ClassParser.java
@@ -197,12 +197,16 @@
         Method[] declaredMethods = AccessController.doPrivileged((PrivilegedAction<Method[]>) clazz::getDeclaredMethods);
         for (Method method : declaredMethods) {
             String name = method.getName();
+
             //isBridge method filters out methods inherited from interfaces
             boolean isAccessorMethod = isSpecialAccessorMethod(method, classProperties)
+                    || isVirtualAccessorMethod(method)
                     || isPropertyMethod(method);
+
             if (!isAccessorMethod || method.isBridge() || isSpecialCaseMethod(clazz, method)) {
                 continue;
             }
+            
             final String propertyName = method.getDeclaringClass().isRecord()
                     ? name
                     : toPropertyMethod(name);
@@ -272,6 +276,14 @@
                 && classProperties.containsKey(method.getName());
     }
 
+    private static boolean isVirtualAccessorMethod(Method method) {
+        return method.getDeclaringClass().isRecord()
+                && method.getParameterCount() == 0
+                && !void.class.equals(method.getReturnType())
+                && !"hashCode".equals(method.getName())
+                && !"toString".equals(method.getName());
+    }
+
     private static void parseFields(JsonbAnnotatedElement<Class<?>> classElement, Map<String, Property> classProperties) {
         Field[] declaredFields = AccessController.doPrivileged(
                 (PrivilegedAction<Field[]>) () -> classElement.getElement().getDeclaredFields());