diff --git a/cr-examples/triton/src/main/java/oracle/code/triton/SCFOps.java b/cr-examples/triton/src/main/java/oracle/code/triton/SCFOps.java
index 03344931c00..05907159fe5 100644
--- a/cr-examples/triton/src/main/java/oracle/code/triton/SCFOps.java
+++ b/cr-examples/triton/src/main/java/oracle/code/triton/SCFOps.java
@@ -42,22 +42,22 @@ public static final class ForOp extends OpWithDefinition implements Op.Loop {
         public static class Builder {
             final Body.Builder ancestorBody;
             final List<Value> range;
-            final FunctionType loopDescriptor;
+            final FunctionType loopType;
 
-            Builder(Body.Builder ancestorBody, List<Value> range, FunctionType loopDescriptor) {
+            Builder(Body.Builder ancestorBody, List<Value> range, FunctionType loopType) {
                 this.ancestorBody = ancestorBody;
                 this.range = range;
-                this.loopDescriptor = loopDescriptor;
+                this.loopType = loopType;
             }
 
             public ForOp body(Consumer<Block.Builder> c) {
-                Body.Builder body = Body.Builder.of(ancestorBody, loopDescriptor);
+                Body.Builder body = Body.Builder.of(ancestorBody, loopType);
                 c.accept(body.entryBlock());
                 return new ForOp(range, body);
             }
 
             public ForOp body(CopyContext cc, Consumer<Block.Builder> c) {
-                Body.Builder body = Body.Builder.of(ancestorBody, loopDescriptor, cc);
+                Body.Builder body = Body.Builder.of(ancestorBody, loopType, cc);
                 c.accept(body.entryBlock());
                 return new ForOp(range, body);
             }
diff --git a/cr-examples/triton/src/main/java/oracle/code/triton/TritonOps.java b/cr-examples/triton/src/main/java/oracle/code/triton/TritonOps.java
index 5fb21ea891f..bc098fc3db9 100644
--- a/cr-examples/triton/src/main/java/oracle/code/triton/TritonOps.java
+++ b/cr-examples/triton/src/main/java/oracle/code/triton/TritonOps.java
@@ -136,16 +136,16 @@ public static final class FuncOp extends TritonOp implements Op.Invokable, Op.Is
         public static class Builder {
             final Body.Builder ancestorBody;
             final String funcName;
-            final FunctionType funcDescriptor;
+            final FunctionType funcType;
 
-            Builder(Body.Builder ancestorBody, String funcName, FunctionType funcDescriptor) {
+            Builder(Body.Builder ancestorBody, String funcName, FunctionType funcType) {
                 this.ancestorBody = ancestorBody;
                 this.funcName = funcName;
-                this.funcDescriptor = funcDescriptor;
+                this.funcType = funcType;
             }
 
             public FuncOp body(Consumer<Block.Builder> c) {
-                Body.Builder body = Body.Builder.of(ancestorBody, funcDescriptor);
+                Body.Builder body = Body.Builder.of(ancestorBody, funcType);
                 c.accept(body.entryBlock());
                 return new FuncOp(funcName, body);
             }
@@ -305,17 +305,17 @@ public static class Builder {
             final Body.Builder ancestorBody;
             final int axis;
             final Value v;
-            final FunctionType reduceDescriptor;
+            final FunctionType reduceType;
 
-            Builder(Body.Builder ancestorBody, int axis, Value v, FunctionType reduceDescriptor) {
+            Builder(Body.Builder ancestorBody, int axis, Value v, FunctionType reduceType) {
                 this.ancestorBody = ancestorBody;
                 this.axis = axis;
                 this.v = v;
-                this.reduceDescriptor = reduceDescriptor;
+                this.reduceType = reduceType;
             }
 
             public ReduceOp body(Consumer<Block.Builder> c) {
-                Body.Builder body = Body.Builder.of(ancestorBody, reduceDescriptor);
+                Body.Builder body = Body.Builder.of(ancestorBody, reduceType);
                 c.accept(body.entryBlock());
                 return new ReduceOp(axis, v, body);
             }
@@ -741,8 +741,8 @@ public static ModuleOp module(List<FuncOp> functions) {
         return new ModuleOp(List.copyOf(functions));
     }
 
-    public static FuncOp.Builder func(String funcName, FunctionType funcDescriptor) {
-        return new FuncOp.Builder(null, funcName, funcDescriptor);
+    public static FuncOp.Builder func(String funcName, FunctionType funcType) {
+        return new FuncOp.Builder(null, funcName, funcType);
     }
 
     public static FuncOp func(String funcName, Body.Builder body) {
@@ -758,8 +758,8 @@ public static CallOp call(FuncOp func, List<Value> args) {
     }
 
     public static ReduceOp.Builder reduce(Body.Builder ancestorBody, int axis, Value tensor,
-                                          FunctionType reduceDescriptor) {
-        return new ReduceOp.Builder(ancestorBody, axis, tensor, reduceDescriptor);
+                                          FunctionType reduceType) {
+        return new ReduceOp.Builder(ancestorBody, axis, tensor, reduceType);
     }
 
     public static ReduceOp reduce(int axis, Value tensor, Body.Builder reducerBuilder) {
diff --git a/cr-util/copy-to-compiler.sh b/cr-util/copy-to-compiler.sh
index ffd24bcc3d4..3618cc5c059 100644
--- a/cr-util/copy-to-compiler.sh
+++ b/cr-util/copy-to-compiler.sh
@@ -29,8 +29,6 @@
 base=java/lang/reflect/code
 packages="
   $base \
-  $base/descriptor \
-  $base/descriptor/impl \
   $base/writer \
   $base/op \
   $base/type \
diff --git a/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeGenerator.java b/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeGenerator.java
index 848806ea3e4..fdaf1756eda 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeGenerator.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeGenerator.java
@@ -46,8 +46,8 @@
 import java.lang.invoke.MethodType;
 import java.lang.reflect.code.Value;
 import java.lang.reflect.code.analysis.Liveness;
-import java.lang.reflect.code.descriptor.FieldDesc;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.FieldRef;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.type.FunctionType;
 import java.lang.reflect.code.type.JavaType;
 import java.lang.reflect.code.TypeElement;
@@ -91,7 +91,7 @@ public static MethodHandle generate(MethodHandles.Lookup l, CoreOps.FuncOp fop)
 
         try {
             FunctionType ft = fop.invokableType();
-            MethodType mt = MethodDesc.toNominalDescriptor(ft).resolveConstantDesc(hcl);
+            MethodType mt = MethodRef.toNominalDescriptor(ft).resolveConstantDesc(hcl);
             return hcl.findStatic(hcl.lookupClass(), fop.funcName(), mt);
         } catch (ReflectiveOperationException e) {
             throw new RuntimeException(e);
@@ -109,7 +109,7 @@ public static byte[] generateClassData(MethodHandles.Lookup lookup, CoreOps.Func
                 ? fop.funcName()
                 : packageName + "." + fop.funcName();
         Liveness liveness = new Liveness(fop);
-        MethodTypeDesc mtd = MethodDesc.toNominalDescriptor(fop.invokableType());
+        MethodTypeDesc mtd = MethodRef.toNominalDescriptor(fop.invokableType());
         byte[] classBytes = ClassFile.of().build(ClassDesc.of(className), clb ->
                 clb.withMethodBody(
                         fop.funcName(),
@@ -600,7 +600,7 @@ private static void generateBody(Body body, CodeBuilder cob, ConversionContext c
                                 cob.invokespecial(
                                         ((JavaType) op.resultType()).toNominalDescriptor(),
                                         ConstantDescs.INIT_NAME,
-                                        MethodDesc.toNominalDescriptor(op.constructorType())
+                                        MethodRef.toNominalDescriptor(op.constructorType())
                                                 .changeReturnType(ConstantDescs.CD_void));
                             }
                             case 1 -> {
@@ -636,7 +636,7 @@ private static void generateBody(Body body, CodeBuilder cob, ConversionContext c
                                 descKind = DirectMethodHandleDesc.Kind.STATIC;
                             }
                         }
-                        MethodDesc md = op.invokeDescriptor();
+                        MethodRef md = op.invokeDescriptor();
                         cob.invokeInstruction(
                                 switch (descKind) {
                                     case STATIC, INTERFACE_STATIC   -> Opcode.INVOKESTATIC;
@@ -648,7 +648,7 @@ private static void generateBody(Body body, CodeBuilder cob, ConversionContext c
                                 },
                                 ((JavaType) md.refType()).toNominalDescriptor(),
                                 md.name(),
-                                MethodDesc.toNominalDescriptor(md.type()),
+                                MethodRef.toNominalDescriptor(md.type()),
                                 switch (descKind) {
                                     case INTERFACE_STATIC, INTERFACE_VIRTUAL, INTERFACE_SPECIAL -> true;
                                     default -> false;
@@ -660,7 +660,7 @@ private static void generateBody(Body body, CodeBuilder cob, ConversionContext c
                     }
                     case FieldAccessOp.FieldLoadOp op -> {
                         processOperands(cob, c, op, isLastOpResultOnStack);
-                        FieldDesc fd = op.fieldDescriptor();
+                        FieldRef fd = op.fieldDescriptor();
                         if (op.operands().isEmpty()) {
                             cob.getstatic(
                                     ((JavaType) fd.refType()).toNominalDescriptor(),
@@ -676,7 +676,7 @@ private static void generateBody(Body body, CodeBuilder cob, ConversionContext c
                     case FieldAccessOp.FieldStoreOp op -> {
                         processOperands(cob, c, op, isLastOpResultOnStack);
                         isLastOpResultOnStack = false;
-                        FieldDesc fd = op.fieldDescriptor();
+                        FieldRef fd = op.fieldDescriptor();
                         if (op.operands().size() == 1) {
                             cob.putstatic(
                                     ((JavaType) fd.refType()).toNominalDescriptor(),
@@ -1029,7 +1029,7 @@ private static void assignBlockArguments(Op op, Block.Reference s, CodeBuilder c
         }
     }
 
-    static DirectMethodHandleDesc resolveToMethodHandleDesc(MethodHandles.Lookup l, MethodDesc d) throws ReflectiveOperationException {
+    static DirectMethodHandleDesc resolveToMethodHandleDesc(MethodHandles.Lookup l, MethodRef d) throws ReflectiveOperationException {
         MethodHandle mh = d.resolveToHandle(l);
 
         if (mh.describeConstable().isEmpty()) {
diff --git a/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeLift.java b/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeLift.java
index 0995ddd0964..b48f0c3aef8 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeLift.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/bytecode/BytecodeLift.java
@@ -42,8 +42,8 @@
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.Op;
 import java.lang.reflect.code.Value;
-import java.lang.reflect.code.descriptor.FieldDesc;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.FieldRef;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.op.CoreOps.ExceptionRegionEnter;
 import java.lang.reflect.code.type.FunctionType;
 import java.lang.reflect.code.type.JavaType;
@@ -72,7 +72,7 @@ public static CoreOps.FuncOp lift(byte[] classdata, String methodName) {
     }
 
     public static CoreOps.FuncOp lift(MethodModel methodModel) {
-        FunctionType mt = MethodDesc.ofNominalDescriptor(methodModel.methodTypeSymbol());
+        FunctionType mt = MethodRef.ofNominalDescriptor(methodModel.methodTypeSymbol());
         return CoreOps.func(
                 methodModel.methodName().stringValue(),
                 mt).body(entryBlock -> {
@@ -296,7 +296,7 @@ public static CoreOps.FuncOp lift(MethodModel methodModel) {
                             }));
                         }
                         case FieldInstruction inst -> {
-                                FieldDesc fd = FieldDesc.field(
+                                FieldRef fd = FieldRef.field(
                                         JavaType.ofNominalDescriptor(inst.owner().asSymbol()),
                                         inst.name().stringValue(),
                                         JavaType.ofNominalDescriptor(inst.typeSymbol()));
@@ -325,12 +325,12 @@ public static CoreOps.FuncOp lift(MethodModel methodModel) {
                             stack.push(currentBlock.op(CoreOps.arrayLoadOp(stack.pop(), index)));
                         }
                         case InvokeInstruction inst -> {
-                            FunctionType mType = MethodDesc.ofNominalDescriptor(inst.typeSymbol());
+                            FunctionType mType = MethodRef.ofNominalDescriptor(inst.typeSymbol());
                             List<Value> operands = new ArrayList<>();
                             for (var _ : mType.parameterTypes()) {
                                 operands.add(stack.pop());
                             }
-                            MethodDesc mDesc = MethodDesc.method(
+                            MethodRef mDesc = MethodRef.method(
                                     JavaType.ofNominalDescriptor(inst.owner().asSymbol()),
                                     inst.name().stringValue(),
                                     mType);
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/package-info.java b/src/java.base/share/classes/java/lang/reflect/code/descriptor/package-info.java
deleted file mode 100644
index 7e06a25885c..00000000000
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/package-info.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/**
- * Java descriptors for code models.
- */
-package java.lang.reflect.code.descriptor;
\ No newline at end of file
diff --git a/src/java.base/share/classes/java/lang/reflect/code/interpreter/Interpreter.java b/src/java.base/share/classes/java/lang/reflect/code/interpreter/Interpreter.java
index e03e76dbd12..44f5875c821 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/interpreter/Interpreter.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/interpreter/Interpreter.java
@@ -29,8 +29,8 @@
 import java.lang.reflect.Array;
 import java.lang.reflect.Proxy;
 import java.lang.reflect.code.*;
-import java.lang.reflect.code.descriptor.FieldDesc;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.FieldRef;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.type.FunctionType;
 import java.lang.reflect.code.type.JavaType;
@@ -548,11 +548,11 @@ static MethodHandle opHandle(String opName, FunctionType ft) {
         }
     }
 
-    static MethodHandle methodStaticHandle(MethodHandles.Lookup l, MethodDesc d) {
+    static MethodHandle methodStaticHandle(MethodHandles.Lookup l, MethodRef d) {
         return resolveToMethodHandle(l, d);
     }
 
-    static MethodHandle methodHandle(MethodHandles.Lookup l, MethodDesc d) {
+    static MethodHandle methodHandle(MethodHandles.Lookup l, MethodRef d) {
         return resolveToMethodHandle(l, d);
     }
 
@@ -573,11 +573,11 @@ static MethodHandle constructorHandle(MethodHandles.Lookup l, FunctionType ft) {
         }
     }
 
-    static VarHandle fieldStaticHandle(MethodHandles.Lookup l, FieldDesc d) {
+    static VarHandle fieldStaticHandle(MethodHandles.Lookup l, FieldRef d) {
         return resolveToVarHandle(l, d);
     }
 
-    static VarHandle fieldHandle(MethodHandles.Lookup l, FieldDesc d) {
+    static VarHandle fieldHandle(MethodHandles.Lookup l, FieldRef d) {
         return resolveToVarHandle(l, d);
     }
 
@@ -591,7 +591,7 @@ static Object cast(MethodHandles.Lookup l, TypeElement d, Object v) {
         return c.cast(v);
     }
 
-    static MethodHandle resolveToMethodHandle(MethodHandles.Lookup l, MethodDesc d) {
+    static MethodHandle resolveToMethodHandle(MethodHandles.Lookup l, MethodRef d) {
         try {
             return d.resolveToHandle(l);
         } catch (ReflectiveOperationException e) {
@@ -599,7 +599,7 @@ static MethodHandle resolveToMethodHandle(MethodHandles.Lookup l, MethodDesc d)
         }
     }
 
-    static VarHandle resolveToVarHandle(MethodHandles.Lookup l, FieldDesc d) {
+    static VarHandle resolveToVarHandle(MethodHandles.Lookup l, FieldRef d) {
         try {
             return d.resolveToHandle(l);
         } catch (ReflectiveOperationException e) {
@@ -609,7 +609,7 @@ static VarHandle resolveToVarHandle(MethodHandles.Lookup l, FieldDesc d) {
 
     public static MethodType resolveToMethodType(MethodHandles.Lookup l, FunctionType ft) {
         try {
-            return MethodDesc.toNominalDescriptor(ft).resolveConstantDesc(l);
+            return MethodRef.toNominalDescriptor(ft).resolveConstantDesc(l);
         } catch (ReflectiveOperationException e) {
             throw interpreterException(e);
         }
diff --git a/src/java.base/share/classes/java/lang/reflect/code/op/CoreOps.java b/src/java.base/share/classes/java/lang/reflect/code/op/CoreOps.java
index c3bb008742b..fd8b33c42c9 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/op/CoreOps.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/op/CoreOps.java
@@ -26,8 +26,8 @@
 package java.lang.reflect.code.op;
 
 import java.lang.reflect.code.*;
-import java.lang.reflect.code.descriptor.FieldDesc;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.FieldRef;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.type.*;
 import java.lang.reflect.code.type.impl.JavaTypeImpl;
 import java.util.*;
@@ -330,7 +330,7 @@ public TypeElement resultType() {
     public static final class QuotedOp extends OpWithDefinition implements Op.Nested, Op.Lowerable, Op.Pure {
         public static final String NAME = "quoted";
 
-        // Type description must be the same in the java.base and jdk.compiler module
+        // Type name must be the same in the java.base and jdk.compiler module
         static final String Quoted_CLASS_NAME = PACKAGE_NAME +
                 "." + Quoted.class.getSimpleName();
         public static final JavaType QUOTED_TYPE = new JavaTypeImpl(Quoted_CLASS_NAME);
@@ -1190,21 +1190,21 @@ public static final class InvokeOp extends OpWithDefinition implements Reflectiv
         public static final String NAME = "invoke";
         public static final String ATTRIBUTE_INVOKE_DESCRIPTOR = NAME + ".descriptor";
 
-        final MethodDesc invokeDescriptor;
+        final MethodRef invokeDescriptor;
         final TypeElement resultType;
 
         public static InvokeOp create(OpDefinition def) {
-            MethodDesc invokeDescriptor = def.extractAttributeValue(ATTRIBUTE_INVOKE_DESCRIPTOR,
+            MethodRef invokeDescriptor = def.extractAttributeValue(ATTRIBUTE_INVOKE_DESCRIPTOR,
                     true, v -> switch(v) {
-                        case String s -> MethodDesc.ofString(s);
-                        case MethodDesc md -> md;
+                        case String s -> MethodRef.ofString(s);
+                        case MethodRef md -> md;
                         default -> throw new UnsupportedOperationException("Unsupported invoke descriptor value:" + v);
                     });
 
             return new InvokeOp(def, invokeDescriptor);
         }
 
-        InvokeOp(OpDefinition def, MethodDesc invokeDescriptor) {
+        InvokeOp(OpDefinition def, MethodRef invokeDescriptor) {
             super(def);
 
             this.invokeDescriptor = invokeDescriptor;
@@ -1223,11 +1223,11 @@ public InvokeOp transform(CopyContext cc, OpTransformer ot) {
             return new InvokeOp(this, cc);
         }
 
-        InvokeOp(MethodDesc invokeDescriptor, List<Value> args) {
+        InvokeOp(MethodRef invokeDescriptor, List<Value> args) {
             this(invokeDescriptor.type().returnType(), invokeDescriptor, args);
         }
 
-        InvokeOp(TypeElement resultType, MethodDesc invokeDescriptor, List<Value> args) {
+        InvokeOp(TypeElement resultType, MethodRef invokeDescriptor, List<Value> args) {
             super(NAME, args);
 
             this.invokeDescriptor = invokeDescriptor;
@@ -1241,7 +1241,7 @@ public Map<String, Object> attributes() {
             return Collections.unmodifiableMap(m);
         }
 
-        public MethodDesc invokeDescriptor() {
+        public MethodRef invokeDescriptor() {
             return invokeDescriptor;
         }
 
@@ -1385,9 +1385,9 @@ public sealed interface AccessOp {
     public abstract static sealed class FieldAccessOp extends OpWithDefinition implements AccessOp, ReflectiveOp {
         public static final String ATTRIBUTE_FIELD_DESCRIPTOR = "field.descriptor";
 
-        final FieldDesc fieldDescriptor;
+        final FieldRef fieldDescriptor;
 
-        FieldAccessOp(OpDefinition def, FieldDesc fieldDescriptor) {
+        FieldAccessOp(OpDefinition def, FieldRef fieldDescriptor) {
             super(def);
 
             this.fieldDescriptor = fieldDescriptor;
@@ -1400,7 +1400,7 @@ public abstract static sealed class FieldAccessOp extends OpWithDefinition imple
         }
 
         FieldAccessOp(String name, List<Value> operands,
-                      FieldDesc fieldDescriptor) {
+                      FieldRef fieldDescriptor) {
             super(name, operands);
 
             this.fieldDescriptor = fieldDescriptor;
@@ -1413,7 +1413,7 @@ public Map<String, Object> attributes() {
             return Collections.unmodifiableMap(m);
         }
 
-        public final FieldDesc fieldDescriptor() {
+        public final FieldRef fieldDescriptor() {
             return fieldDescriptor;
         }
 
@@ -1432,16 +1432,16 @@ public static FieldLoadOp create(OpDefinition def) {
                     throw new IllegalArgumentException("Operation must accept zero or one operand");
                 }
 
-                FieldDesc fieldDescriptor = def.extractAttributeValue(ATTRIBUTE_FIELD_DESCRIPTOR,true,
+                FieldRef fieldDescriptor = def.extractAttributeValue(ATTRIBUTE_FIELD_DESCRIPTOR,true,
                         v -> switch(v) {
-                            case String s -> FieldDesc.ofString(s);
-                            case FieldDesc fd -> fd;
+                            case String s -> FieldRef.ofString(s);
+                            case FieldRef fd -> fd;
                             default -> throw new UnsupportedOperationException("Unsupported field descriptor value:" + v);
                         });
                 return new FieldLoadOp(def, fieldDescriptor);
             }
 
-            FieldLoadOp(OpDefinition opdef, FieldDesc fieldDescriptor) {
+            FieldLoadOp(OpDefinition opdef, FieldRef fieldDescriptor) {
                 super(opdef, fieldDescriptor);
 
                 resultType = opdef.resultType();
@@ -1459,14 +1459,14 @@ public FieldLoadOp transform(CopyContext cc, OpTransformer ot) {
             }
 
             // instance
-            FieldLoadOp(TypeElement resultType, FieldDesc descriptor, Value receiver) {
+            FieldLoadOp(TypeElement resultType, FieldRef descriptor, Value receiver) {
                 super(NAME, List.of(receiver), descriptor);
 
                 this.resultType = resultType;
             }
 
             // static
-            FieldLoadOp(TypeElement resultType, FieldDesc descriptor) {
+            FieldLoadOp(TypeElement resultType, FieldRef descriptor) {
                 super(NAME, List.of(), descriptor);
 
                 this.resultType = resultType;
@@ -1491,16 +1491,16 @@ public static FieldStoreOp create(OpDefinition def) {
                     throw new IllegalArgumentException("Operation must accept one or two operands");
                 }
 
-                FieldDesc fieldDescriptor = def.extractAttributeValue(ATTRIBUTE_FIELD_DESCRIPTOR,true,
+                FieldRef fieldDescriptor = def.extractAttributeValue(ATTRIBUTE_FIELD_DESCRIPTOR,true,
                         v -> switch(v) {
-                            case String s -> FieldDesc.ofString(s);
-                            case FieldDesc fd -> fd;
+                            case String s -> FieldRef.ofString(s);
+                            case FieldRef fd -> fd;
                             default -> throw new UnsupportedOperationException("Unsupported field descriptor value:" + v);
                         });
                 return new FieldStoreOp(def, fieldDescriptor);
             }
 
-            FieldStoreOp(OpDefinition opdef, FieldDesc fieldDescriptor) {
+            FieldStoreOp(OpDefinition opdef, FieldRef fieldDescriptor) {
                 super(opdef, fieldDescriptor);
             }
 
@@ -1514,13 +1514,13 @@ public FieldStoreOp transform(CopyContext cc, OpTransformer ot) {
             }
 
             // instance
-            FieldStoreOp(FieldDesc descriptor, Value receiver, Value v) {
+            FieldStoreOp(FieldRef descriptor, Value receiver, Value v) {
                 super(NAME,
                         List.of(receiver, v), descriptor);
             }
 
             // static
-            FieldStoreOp(FieldDesc descriptor, Value v) {
+            FieldStoreOp(FieldRef descriptor, Value v) {
                 super(NAME,
                         List.of(v), descriptor);
             }
@@ -2928,29 +2928,29 @@ public static FuncOp func(String funcName, Body.Builder body) {
     /**
      * Creates a function call operation
      * @param funcName the name of the function operation
-     * @param funcDescriptor the function descriptor
+     * @param funcType the function type
      * @param args the function arguments
      * @return the function call operation
      */
-    public static FuncCallOp funcCall(String funcName, FunctionType funcDescriptor, Value... args) {
-        return funcCall(funcName, funcDescriptor, List.of(args));
+    public static FuncCallOp funcCall(String funcName, FunctionType funcType, Value... args) {
+        return funcCall(funcName, funcType, List.of(args));
     }
 
     /**
      * Creates a function call operation
      * @param funcName the name of the function operation
-     * @param funcDescriptor the function descriptor
+     * @param funcType the function type
      * @param args the function arguments
      * @return the function call operation
      */
-    public static FuncCallOp funcCall(String funcName, FunctionType funcDescriptor, List<Value> args) {
-        return new FuncCallOp(funcName, funcDescriptor.returnType(), args);
+    public static FuncCallOp funcCall(String funcName, FunctionType funcType, List<Value> args) {
+        return new FuncCallOp(funcName, funcType.returnType(), args);
     }
 
     /**
      * Creates a function call operation
      * @param func the target function
-     * @param args the function argments
+     * @param args the function arguments
      * @return the function call operation
      */
     public static FuncCallOp funcCall(FuncOp func, Value... args) {
@@ -3202,7 +3202,7 @@ public static ConstantOp constant(TypeElement type, Object value) {
      * @param args the invoke parameters
      * @return the invoke operation
      */
-    public static InvokeOp invoke(MethodDesc invokeDescriptor, Value... args) {
+    public static InvokeOp invoke(MethodRef invokeDescriptor, Value... args) {
         return new InvokeOp(invokeDescriptor, List.of(args));
     }
 
@@ -3213,7 +3213,7 @@ public static InvokeOp invoke(MethodDesc invokeDescriptor, Value... args) {
      * @param args the invoke parameters
      * @return the invoke operation
      */
-    public static InvokeOp invoke(MethodDesc invokeDescriptor, List<Value> args) {
+    public static InvokeOp invoke(MethodRef invokeDescriptor, List<Value> args) {
         return new InvokeOp(invokeDescriptor, args);
     }
 
@@ -3225,7 +3225,7 @@ public static InvokeOp invoke(MethodDesc invokeDescriptor, List<Value> args) {
      * @param args the invoke parameters
      * @return the invoke operation
      */
-    public static InvokeOp invoke(TypeElement returnType, MethodDesc invokeDescriptor, Value... args) {
+    public static InvokeOp invoke(TypeElement returnType, MethodRef invokeDescriptor, Value... args) {
         return new InvokeOp(returnType, invokeDescriptor, List.of(args));
     }
 
@@ -3237,7 +3237,7 @@ public static InvokeOp invoke(TypeElement returnType, MethodDesc invokeDescripto
      * @param args the invoke parameters
      * @return the invoke operation
      */
-    public static InvokeOp invoke(TypeElement returnType, MethodDesc invokeDescriptor, List<Value> args) {
+    public static InvokeOp invoke(TypeElement returnType, MethodRef invokeDescriptor, List<Value> args) {
         return new InvokeOp(returnType, invokeDescriptor, args);
     }
 
@@ -3320,7 +3320,7 @@ public static NewOp newArray(TypeElement arrayType, Value length) {
      * @param receiver the receiver value
      * @return the field load operation
      */
-    public static FieldAccessOp.FieldLoadOp fieldLoad(FieldDesc descriptor, Value receiver) {
+    public static FieldAccessOp.FieldLoadOp fieldLoad(FieldRef descriptor, Value receiver) {
         return new FieldAccessOp.FieldLoadOp(descriptor.type(), descriptor, receiver);
     }
 
@@ -3332,7 +3332,7 @@ public static FieldAccessOp.FieldLoadOp fieldLoad(FieldDesc descriptor, Value re
      * @param receiver the receiver value
      * @return the field load operation
      */
-    public static FieldAccessOp.FieldLoadOp fieldLoad(TypeElement resultType, FieldDesc descriptor, Value receiver) {
+    public static FieldAccessOp.FieldLoadOp fieldLoad(TypeElement resultType, FieldRef descriptor, Value receiver) {
         return new FieldAccessOp.FieldLoadOp(resultType, descriptor, receiver);
     }
 
@@ -3342,7 +3342,7 @@ public static FieldAccessOp.FieldLoadOp fieldLoad(TypeElement resultType, FieldD
      * @param descriptor the field descriptor
      * @return the field load operation
      */
-    public static FieldAccessOp.FieldLoadOp fieldLoad(FieldDesc descriptor) {
+    public static FieldAccessOp.FieldLoadOp fieldLoad(FieldRef descriptor) {
         return new FieldAccessOp.FieldLoadOp(descriptor.type(), descriptor);
     }
 
@@ -3353,7 +3353,7 @@ public static FieldAccessOp.FieldLoadOp fieldLoad(FieldDesc descriptor) {
      * @param descriptor the field descriptor
      * @return the field load operation
      */
-    public static FieldAccessOp.FieldLoadOp fieldLoad(TypeElement resultType, FieldDesc descriptor) {
+    public static FieldAccessOp.FieldLoadOp fieldLoad(TypeElement resultType, FieldRef descriptor) {
         return new FieldAccessOp.FieldLoadOp(resultType, descriptor);
     }
 
@@ -3365,7 +3365,7 @@ public static FieldAccessOp.FieldLoadOp fieldLoad(TypeElement resultType, FieldD
      * @param v the value to store
      * @return the field store operation
      */
-    public static FieldAccessOp.FieldStoreOp fieldStore(FieldDesc descriptor, Value receiver, Value v) {
+    public static FieldAccessOp.FieldStoreOp fieldStore(FieldRef descriptor, Value receiver, Value v) {
         return new FieldAccessOp.FieldStoreOp(descriptor, receiver, v);
     }
 
@@ -3376,7 +3376,7 @@ public static FieldAccessOp.FieldStoreOp fieldStore(FieldDesc descriptor, Value
      * @param v the value to store
      * @return the field store operation
      */
-    public static FieldAccessOp.FieldStoreOp fieldStore(FieldDesc descriptor, Value v) {
+    public static FieldAccessOp.FieldStoreOp fieldStore(FieldRef descriptor, Value v) {
         return new FieldAccessOp.FieldStoreOp(descriptor, v);
     }
 
@@ -3416,7 +3416,7 @@ public static ArrayAccessOp.ArrayStoreOp arrayStoreOp(Value array, Value index,
     /**
      * Creates an instanceof operation.
      *
-     * @param t the type descriptor of the type to test against
+     * @param t the type to test against
      * @param v the value to test
      * @return the instanceof operation
      */
@@ -3439,7 +3439,7 @@ public static CastOp cast(TypeElement resultType, Value v) {
      * Creates a cast operation.
      *
      * @param resultType the result type of the operation
-     * @param t the type descriptor of the type to cast to
+     * @param t the type to cast to
      * @param v the value to cast
      * @return the cast operation
      */
diff --git a/src/java.base/share/classes/java/lang/reflect/code/op/ExtendedOps.java b/src/java.base/share/classes/java/lang/reflect/code/op/ExtendedOps.java
index ca39d113f5a..128a35ac3b9 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/op/ExtendedOps.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/op/ExtendedOps.java
@@ -26,8 +26,8 @@
 package java.lang.reflect.code.op;
 
 import java.lang.reflect.code.*;
-import java.lang.reflect.code.descriptor.MethodDesc;
-import java.lang.reflect.code.descriptor.RecordTypeDesc;
+import java.lang.reflect.code.type.MethodRef;
+import java.lang.reflect.code.type.RecordTypeRef;
 import java.lang.reflect.code.type.FunctionType;
 import java.lang.reflect.code.type.JavaType;
 import java.lang.reflect.code.type.TupleType;
@@ -1188,9 +1188,9 @@ public Body loopBody() {
             return body;
         }
 
-        static final MethodDesc ITERABLE_ITERATOR = MethodDesc.method(Iterable.class, "iterator", Iterator.class);
-        static final MethodDesc ITERATOR_HAS_NEXT = MethodDesc.method(Iterator.class, "hasNext", boolean.class);
-        static final MethodDesc ITERATOR_NEXT = MethodDesc.method(Iterator.class, "next", Object.class);
+        static final MethodRef ITERABLE_ITERATOR = MethodRef.method(Iterable.class, "iterator", Iterator.class);
+        static final MethodRef ITERATOR_HAS_NEXT = MethodRef.method(Iterator.class, "hasNext", boolean.class);
+        static final MethodRef ITERATOR_NEXT = MethodRef.method(Iterator.class, "next", Object.class);
 
         @Override
         public Block.Builder lower(Block.Builder b, OpTransformer opT) {
@@ -2508,20 +2508,20 @@ public static final class RecordPatternOp extends PatternOp {
 
             public static final String ATTRIBUTE_RECORD_DESCRIPTOR = NAME + ".descriptor";
 
-            final RecordTypeDesc recordDescriptor;
+            final RecordTypeRef recordDescriptor;
 
             public static RecordPatternOp create(OpDefinition def) {
-                RecordTypeDesc recordDescriptor = def.extractAttributeValue(ATTRIBUTE_RECORD_DESCRIPTOR,true,
+                RecordTypeRef recordDescriptor = def.extractAttributeValue(ATTRIBUTE_RECORD_DESCRIPTOR,true,
                         v -> switch (v) {
-                            case String s -> RecordTypeDesc.ofString(s);
-                            case RecordTypeDesc rtd -> rtd;
+                            case String s -> RecordTypeRef.ofString(s);
+                            case RecordTypeRef rtd -> rtd;
                             default -> throw new UnsupportedOperationException("Unsupported record type descriptor value:" + v);
                         });
 
                 return new RecordPatternOp(def, recordDescriptor);
             }
 
-            RecordPatternOp(OpDefinition def, RecordTypeDesc recordDescriptor) {
+            RecordPatternOp(OpDefinition def, RecordTypeRef recordDescriptor) {
                 super(def);
 
                 this.recordDescriptor = recordDescriptor;
@@ -2538,7 +2538,7 @@ public RecordPatternOp transform(CopyContext cc, OpTransformer ot) {
                 return new RecordPatternOp(this, cc);
             }
 
-            RecordPatternOp(RecordTypeDesc recordDescriptor, List<Value> nestedPatterns) {
+            RecordPatternOp(RecordTypeRef recordDescriptor, List<Value> nestedPatterns) {
                 // The type of each value is a subtype of Pattern
                 // The number of values corresponds to the number of components of the record
                 super(NAME, List.copyOf(nestedPatterns));
@@ -2553,7 +2553,7 @@ public Map<String, Object> attributes() {
                 return Collections.unmodifiableMap(m);
             }
 
-            public RecordTypeDesc recordDescriptor() {
+            public RecordTypeRef recordDescriptor() {
                 return recordDescriptor;
             }
 
@@ -3130,7 +3130,7 @@ public static PatternOps.BindingPatternOp bindingPattern(TypeElement type, Strin
      * @param nestedPatterns the nested pattern values
      * @return the record pattern operation
      */
-    public static PatternOps.RecordPatternOp recordPattern(RecordTypeDesc recordDescriptor, Value... nestedPatterns) {
+    public static PatternOps.RecordPatternOp recordPattern(RecordTypeRef recordDescriptor, Value... nestedPatterns) {
         return recordPattern(recordDescriptor, List.of(nestedPatterns));
     }
 
@@ -3140,7 +3140,7 @@ public static PatternOps.RecordPatternOp recordPattern(RecordTypeDesc recordDesc
      * @param nestedPatterns the nested pattern values
      * @return the record pattern operation
      */
-    public static PatternOps.RecordPatternOp recordPattern(RecordTypeDesc recordDescriptor, List<Value> nestedPatterns) {
+    public static PatternOps.RecordPatternOp recordPattern(RecordTypeRef recordDescriptor, List<Value> nestedPatterns) {
         return new PatternOps.RecordPatternOp(recordDescriptor, nestedPatterns);
     }
 }
diff --git a/src/java.base/share/classes/java/lang/reflect/code/parser/OpParser.java b/src/java.base/share/classes/java/lang/reflect/code/parser/OpParser.java
index ac6d024ed48..e4f1de491cf 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/parser/OpParser.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/parser/OpParser.java
@@ -47,7 +47,7 @@
 import java.util.Map;
 
 /**
- * A parser of serialized code models and descriptors from their textual form.
+ * A parser of serialized code models from their textual form.
  * <p>
  * The syntactic grammar of a code mode is specified in the grammar notation, and is a subset of the grammar,
  * specified by the JLS, see section 2.4. (Except that we cannot express non-terminal symbols in italic type.)
@@ -260,7 +260,7 @@ static OpDefinition nodeToOpDef(OpNode opNode, TypeDefinition rtype, Context c,
 
     static Body.Builder nodeToBody(BodyNode n, Context c, Body.Builder ancestorBody) {
         Body.Builder body = Body.Builder.of(ancestorBody,
-                // Create descriptor with just the return type and add parameters afterward
+                // Create function type with just the return type and add parameters afterward
                 FunctionType.functionType(c.typeFactory.constructType(n.rtype)));
         Block.Builder eb = body.entryBlock();
 
diff --git a/src/java.base/share/classes/java/lang/reflect/code/parser/impl/DescParser.java b/src/java.base/share/classes/java/lang/reflect/code/parser/impl/DescParser.java
index 09d2f8fc08a..af35928d5df 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/parser/impl/DescParser.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/parser/impl/DescParser.java
@@ -25,12 +25,12 @@
 
 package java.lang.reflect.code.parser.impl;
 
-import java.lang.reflect.code.descriptor.*;
-import java.lang.reflect.code.descriptor.impl.*;
-import java.lang.reflect.code.type.CoreTypeFactory;
+import java.lang.reflect.code.type.*;
 import java.lang.reflect.code.TypeElement;
-import java.lang.reflect.code.type.FunctionType;
-import java.lang.reflect.code.type.TypeDefinition;
+import java.lang.reflect.code.type.RecordTypeRef;
+import java.lang.reflect.code.type.impl.FieldRefImpl;
+import java.lang.reflect.code.type.impl.MethodRefImpl;
+import java.lang.reflect.code.type.impl.RecordTypeRefImpl;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -38,9 +38,9 @@ public final class DescParser {
     private DescParser() {}
 
     /**
-     * Parse a type descriptor from its serialized textual form.
-     * @param desc the serialized type descriptor
-     * @return the type descriptor
+     * Parse a type definition from its serialized textual form.
+     * @param desc the serialized type definition
+     * @return the type definition
      */
     public static TypeDefinition parseTypeDefinition(String desc) {
         Scanner s = Scanner.factory().newScanner(desc);
@@ -49,39 +49,39 @@ public static TypeDefinition parseTypeDefinition(String desc) {
     }
 
     /**
-     * Parse a method descriptor from its serialized textual form.
+     * Parse a method reference from its serialized textual form.
      *
-     * @param desc the serialized method descriptor
-     * @return the method descriptor
+     * @param desc the serialized method reference
+     * @return the method reference
      */
-    public static MethodDesc parseMethodDesc(String desc) {
+    public static MethodRef parseMethodRef(String desc) {
         Scanner s = Scanner.factory().newScanner(desc);
         s.nextToken();
-        return parseMethodDesc(s);
+        return parseMethodRef(s);
     }
 
     /**
-     * Parse a field descriptor from its serialized textual form.
+     * Parse a field reference from its serialized textual form.
      *
-     * @param desc the serialized field descriptor
-     * @return the field descriptor
+     * @param desc the serialized field reference
+     * @return the field reference
      */
-    public static FieldDesc parseFieldDesc(String desc) {
+    public static FieldRef parseFieldRef(String desc) {
         Scanner s = Scanner.factory().newScanner(desc);
         s.nextToken();
-        return parseFieldDesc(s);
+        return parseFieldRef(s);
     }
 
     /**
-     * Parse a record type descriptor from its serialized textual form.
+     * Parse a record type reference from its serialized textual form.
      *
-     * @param desc the serialized record type descriptor
-     * @return the record type descriptor
+     * @param desc the serialized record type reference
+     * @return the record type reference
      */
-    public static RecordTypeDesc parseRecordTypeDesc(String desc) {
+    public static RecordTypeRef parseRecordTypeRef(String desc) {
         Scanner s = Scanner.factory().newScanner(desc);
         s.nextToken();
-        return parseRecordTypeDesc(s);
+        return parseRecordTypeRef(s);
     }
 
     public static TypeDefinition parseTypeDefinition(Lexer l) {
@@ -147,7 +147,7 @@ static FunctionType parseMethodType(Lexer l) {
         return FunctionType.functionType(rtype, ptypes);
     }
 
-    static MethodDesc parseMethodDesc(Lexer l) {
+    static MethodRef parseMethodRef(Lexer l) {
         TypeElement refType = parseTypeElement(l);
 
         l.accept(Tokens.TokenKind.COLCOL);
@@ -164,10 +164,10 @@ static MethodDesc parseMethodDesc(Lexer l) {
 
         FunctionType mtype = parseMethodType(l);
 
-        return new MethodDescImpl(refType, methodName, mtype);
+        return new MethodRefImpl(refType, methodName, mtype);
     }
 
-    static FieldDesc parseFieldDesc(Lexer l) {
+    static FieldRef parseFieldRef(Lexer l) {
         TypeElement refType = parseTypeElement(l);
 
         l.accept(Tokens.TokenKind.COLCOL);
@@ -178,22 +178,22 @@ static FieldDesc parseFieldDesc(Lexer l) {
         if (!mtype.parameterTypes().isEmpty()) {
             throw new IllegalArgumentException();
         }
-        return new FieldDescImpl(refType, fieldName, mtype.returnType());
+        return new FieldRefImpl(refType, fieldName, mtype.returnType());
     }
 
-    static RecordTypeDesc parseRecordTypeDesc(Lexer l) {
-        List<RecordTypeDesc.ComponentDesc> components = new ArrayList<>();
+    static RecordTypeRef parseRecordTypeRef(Lexer l) {
+        List<RecordTypeRef.ComponentRef> components = new ArrayList<>();
         l.accept(Tokens.TokenKind.LPAREN);
         if (l.token().kind != Tokens.TokenKind.RPAREN) {
             do {
                 TypeElement componentType = parseTypeElement(l);
                 String componentName = l.accept(Tokens.TokenKind.IDENTIFIER).name();
 
-                components.add(new RecordTypeDesc.ComponentDesc(componentType, componentName));
+                components.add(new RecordTypeRef.ComponentRef(componentType, componentName));
             } while(l.acceptIf(Tokens.TokenKind.COMMA));
         }
         l.accept(Tokens.TokenKind.RPAREN);
         TypeElement recordType = parseTypeElement(l);
-        return new RecordTypeDescImpl(recordType, components);
+        return new RecordTypeRefImpl(recordType, components);
     }
 }
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/FieldDesc.java b/src/java.base/share/classes/java/lang/reflect/code/type/FieldRef.java
similarity index 76%
rename from src/java.base/share/classes/java/lang/reflect/code/descriptor/FieldDesc.java
rename to src/java.base/share/classes/java/lang/reflect/code/type/FieldRef.java
index 0a52403d352..c704d3388cb 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/FieldDesc.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/FieldRef.java
@@ -23,19 +23,18 @@
  * questions.
  */
 
-package java.lang.reflect.code.descriptor;
+package java.lang.reflect.code.type;
 
-import java.lang.reflect.code.descriptor.impl.FieldDescImpl;
+import java.lang.reflect.code.type.impl.FieldRefImpl;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.VarHandle;
 import java.lang.reflect.Field;
-import java.lang.reflect.code.type.JavaType;
 import java.lang.reflect.code.TypeElement;
 
 /**
- * The symbolic description of a Java field.
+ * The symbolic reference to a Java field.
  */
-public sealed interface FieldDesc permits FieldDescImpl {
+public sealed interface FieldRef permits FieldRefImpl {
     TypeElement refType();
 
     String name();
@@ -50,20 +49,20 @@ public sealed interface FieldDesc permits FieldDescImpl {
 
     // Factories
 
-    static FieldDesc field(Field f) {
+    static FieldRef field(Field f) {
         return field(f.getDeclaringClass(), f.getName(), f.getType());
     }
 
-    static FieldDesc field(Class<?> refType, String name, Class<?> type) {
+    static FieldRef field(Class<?> refType, String name, Class<?> type) {
         return field(JavaType.type(refType), name, JavaType.type(type));
     }
 
-    static FieldDesc field(TypeElement refType, String name, TypeElement type) {
-        return new FieldDescImpl(refType, name, type);
+    static FieldRef field(TypeElement refType, String name, TypeElement type) {
+        return new FieldRefImpl(refType, name, type);
     }
 
     // Copied code in jdk.compiler module throws UOE
-    static FieldDesc ofString(String s) {
-/*__throw new UnsupportedOperationException();__*/        return java.lang.reflect.code.parser.impl.DescParser.parseFieldDesc(s);
+    static FieldRef ofString(String s) {
+/*__throw new UnsupportedOperationException();__*/        return java.lang.reflect.code.parser.impl.DescParser.parseFieldRef(s);
     }
 }
\ No newline at end of file
diff --git a/src/java.base/share/classes/java/lang/reflect/code/type/JavaType.java b/src/java.base/share/classes/java/lang/reflect/code/type/JavaType.java
index aa38fad622e..bc959db4a1d 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/type/JavaType.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/JavaType.java
@@ -195,7 +195,7 @@ static JavaType type(JavaType t, JavaType... typeArguments) {
 
     static JavaType type(JavaType t, List<JavaType> typeArguments) {
         if (t.hasTypeArguments()) {
-            throw new IllegalArgumentException("Type descriptor must not have type arguments: " + t);
+            throw new IllegalArgumentException("Type must not have type arguments: " + t);
         }
         JavaTypeImpl timpl = (JavaTypeImpl) t;
         return new JavaTypeImpl(timpl.type, timpl.dims, typeArguments);
@@ -207,10 +207,10 @@ static JavaType type(JavaType t, int dims, JavaType... typeArguments) {
 
     static JavaType type(JavaType t, int dims, List<JavaType> typeArguments) {
         if (t.isArray()) {
-            throw new IllegalArgumentException("Type descriptor must not be an array: " + t);
+            throw new IllegalArgumentException("Type must not be an array: " + t);
         }
         if (t.hasTypeArguments()) {
-            throw new IllegalArgumentException("Type descriptor must not have type arguments: " + t);
+            throw new IllegalArgumentException("Type must not have type arguments: " + t);
         }
         JavaTypeImpl timpl = (JavaTypeImpl) t;
         return new JavaTypeImpl(timpl.type, dims, typeArguments);
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/MethodDesc.java b/src/java.base/share/classes/java/lang/reflect/code/type/MethodRef.java
similarity index 75%
rename from src/java.base/share/classes/java/lang/reflect/code/descriptor/MethodDesc.java
rename to src/java.base/share/classes/java/lang/reflect/code/type/MethodRef.java
index f67661d9949..6a464d3d9df 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/MethodDesc.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/MethodRef.java
@@ -23,25 +23,23 @@
  * questions.
  */
 
-package java.lang.reflect.code.descriptor;
+package java.lang.reflect.code.type;
 
 import java.lang.constant.ClassDesc;
 import java.lang.constant.MethodTypeDesc;
-import java.lang.reflect.code.descriptor.impl.MethodDescImpl;
+import java.lang.reflect.code.type.impl.MethodRefImpl;
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.MethodType;
 import java.lang.reflect.Executable;
 import java.lang.reflect.Method;
-import java.lang.reflect.code.type.FunctionType;
-import java.lang.reflect.code.type.JavaType;
 import java.lang.reflect.code.TypeElement;
 import java.util.List;
 
 import static java.lang.reflect.code.type.FunctionType.functionType;
 
 /**
- * The symbolic description of a Java method.
+ * The symbolic reference to a Java method.
  */
 // @@@ require invoke kind:
 //    special, static, virtual
@@ -51,7 +49,7 @@
 //  constant pool entry of CONSTANT_Methodref_info or CONSTANT_InterfaceMethodref_info.
 //
 //  We can infer the kind, if we can resolve the types and lookup the declared method
-public sealed interface MethodDesc permits MethodDescImpl {
+public sealed interface MethodRef permits MethodRefImpl {
 
     TypeElement refType();
 
@@ -67,38 +65,38 @@ public sealed interface MethodDesc permits MethodDescImpl {
 
     // Factories
 
-    static MethodDesc method(Method m) {
+    static MethodRef method(Method m) {
         return method(m.getDeclaringClass(), m.getName(), m.getReturnType(), m.getParameterTypes());
     }
 
-    static MethodDesc method(Class<?> refType, String name, MethodType mt) {
+    static MethodRef method(Class<?> refType, String name, MethodType mt) {
         return method(refType, name, mt.returnType(), mt.parameterList());
     }
 
-    static MethodDesc method(Class<?> refType, String name, Class<?> retType, Class<?>... params) {
+    static MethodRef method(Class<?> refType, String name, Class<?> retType, Class<?>... params) {
         return method(refType, name, retType, List.of(params));
     }
 
-    static MethodDesc method(Class<?> refType, String name, Class<?> retType, List<Class<?>> params) {
+    static MethodRef method(Class<?> refType, String name, Class<?> retType, List<Class<?>> params) {
         return method(JavaType.type(refType), name, JavaType.type(retType), params.stream().map(JavaType::type).toList());
     }
 
 
-    static MethodDesc method(TypeElement refType, String name, FunctionType type) {
-        return new MethodDescImpl(refType, name, type);
+    static MethodRef method(TypeElement refType, String name, FunctionType type) {
+        return new MethodRefImpl(refType, name, type);
     }
 
-    static MethodDesc method(TypeElement refType, String name, TypeElement retType, TypeElement... params) {
+    static MethodRef method(TypeElement refType, String name, TypeElement retType, TypeElement... params) {
         return method(refType, name, functionType(retType, params));
     }
 
-    static MethodDesc method(TypeElement refType, String name, TypeElement retType, List<? extends TypeElement> params) {
+    static MethodRef method(TypeElement refType, String name, TypeElement retType, List<? extends TypeElement> params) {
         return method(refType, name, functionType(retType, params));
     }
 
     // Copied code in jdk.compiler module throws UOE
-    static MethodDesc ofString(String s) {
-/*__throw new UnsupportedOperationException();__*/        return java.lang.reflect.code.parser.impl.DescParser.parseMethodDesc(s);
+    static MethodRef ofString(String s) {
+/*__throw new UnsupportedOperationException();__*/        return java.lang.reflect.code.parser.impl.DescParser.parseMethodRef(s);
     }
 
 
@@ -114,7 +112,7 @@ static FunctionType ofNominalDescriptor(MethodTypeDesc d) {
     static MethodTypeDesc toNominalDescriptor(FunctionType t) {
         return MethodTypeDesc.of(
                 toClassDesc(t.returnType()),
-                t.parameterTypes().stream().map(MethodDesc::toClassDesc).toList());
+                t.parameterTypes().stream().map(MethodRef::toClassDesc).toList());
     }
 
     private static ClassDesc toClassDesc(TypeElement e) {
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/RecordTypeDesc.java b/src/java.base/share/classes/java/lang/reflect/code/type/RecordTypeRef.java
similarity index 62%
rename from src/java.base/share/classes/java/lang/reflect/code/descriptor/RecordTypeDesc.java
rename to src/java.base/share/classes/java/lang/reflect/code/type/RecordTypeRef.java
index c264a58e814..78bc89440c6 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/RecordTypeDesc.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/RecordTypeRef.java
@@ -23,50 +23,49 @@
  * questions.
  */
 
-package java.lang.reflect.code.descriptor;
+package java.lang.reflect.code.type;
 
-import java.lang.reflect.code.descriptor.impl.RecordTypeDescImpl;
-import java.lang.reflect.code.type.JavaType;
+import java.lang.reflect.code.type.impl.RecordTypeRefImpl;
 import java.lang.reflect.code.TypeElement;
 import java.util.List;
 import java.util.stream.Stream;
 
 /**
- * The symbolic description of a Java record type.
+ * The symbolic reference to a Java record type.
  */
-public sealed interface RecordTypeDesc permits RecordTypeDescImpl {
+public sealed interface RecordTypeRef permits RecordTypeRefImpl {
     TypeElement recordType();
 
     /**
-     * The symbolic description a Java record component.
+     * The symbolic reference to a Java record component.
      * @param type the type of the component
      * @param name the name of the component
      */
-    record ComponentDesc(TypeElement type, String name) {}
+    record ComponentRef(TypeElement type, String name) {}
 
-    List<ComponentDesc> components();
+    List<ComponentRef> components();
 
-    MethodDesc methodForComponent(int i);
+    MethodRef methodForComponent(int i);
 
     // Factories
 
-    static RecordTypeDesc recordType(Class<? extends Record> c) {
-        List<ComponentDesc> components = Stream.of(c.getRecordComponents())
-                .map(rc -> new ComponentDesc(JavaType.type(rc.getType()), rc.getName()))
+    static RecordTypeRef recordType(Class<? extends Record> c) {
+        List<ComponentRef> components = Stream.of(c.getRecordComponents())
+                .map(rc -> new ComponentRef(JavaType.type(rc.getType()), rc.getName()))
                 .toList();
         return recordType(JavaType.type(c), components);
     }
 
-    static RecordTypeDesc recordType(TypeElement recordType, ComponentDesc... components) {
+    static RecordTypeRef recordType(TypeElement recordType, ComponentRef... components) {
         return recordType(recordType, List.of(components));
     }
 
-    static RecordTypeDesc recordType(TypeElement recordType, List<ComponentDesc> components) {
-        return new RecordTypeDescImpl(recordType, components);
+    static RecordTypeRef recordType(TypeElement recordType, List<ComponentRef> components) {
+        return new RecordTypeRefImpl(recordType, components);
     }
 
     // Copied code in jdk.compiler module throws UOE
-    static RecordTypeDesc ofString(String s) {
-/*__throw new UnsupportedOperationException();__*/        return java.lang.reflect.code.parser.impl.DescParser.parseRecordTypeDesc(s);
+    static RecordTypeRef ofString(String s) {
+/*__throw new UnsupportedOperationException();__*/        return java.lang.reflect.code.parser.impl.DescParser.parseRecordTypeRef(s);
     }
 }
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/FieldDescImpl.java b/src/java.base/share/classes/java/lang/reflect/code/type/impl/FieldRefImpl.java
similarity index 93%
rename from src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/FieldDescImpl.java
rename to src/java.base/share/classes/java/lang/reflect/code/type/impl/FieldRefImpl.java
index 40d3c41670a..177a9833d97 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/FieldDescImpl.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/impl/FieldRefImpl.java
@@ -23,21 +23,21 @@
  * questions.
  */
 
-package java.lang.reflect.code.descriptor.impl;
+package java.lang.reflect.code.type.impl;
 
-import java.lang.reflect.code.descriptor.FieldDesc;
+import java.lang.reflect.code.type.FieldRef;
 import java.lang.invoke.MethodHandles;
 import java.lang.invoke.VarHandle;
 import java.lang.reflect.Field;
 import java.lang.reflect.code.type.JavaType;
 import java.lang.reflect.code.TypeElement;
 
-public final class FieldDescImpl implements FieldDesc {
+public final class FieldRefImpl implements FieldRef {
     final TypeElement refType;
     final String name;
     final TypeElement type;
 
-    public FieldDescImpl(TypeElement refType, String name, TypeElement type) {
+    public FieldRefImpl(TypeElement refType, String name, TypeElement type) {
         this.refType = refType;
         this.name = name;
         this.type = type;
@@ -121,7 +121,7 @@ public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
 
-        FieldDescImpl fieldDesc = (FieldDescImpl) o;
+        FieldRefImpl fieldDesc = (FieldRefImpl) o;
 
         if (!refType.equals(fieldDesc.refType)) return false;
         if (!name.equals(fieldDesc.name)) return false;
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/MethodDescImpl.java b/src/java.base/share/classes/java/lang/reflect/code/type/impl/MethodRefImpl.java
similarity index 91%
rename from src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/MethodDescImpl.java
rename to src/java.base/share/classes/java/lang/reflect/code/type/impl/MethodRefImpl.java
index 6c6df090393..cd1af55f7c5 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/MethodDescImpl.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/impl/MethodRefImpl.java
@@ -23,9 +23,9 @@
  * questions.
  */
 
-package java.lang.reflect.code.descriptor.impl;
+package java.lang.reflect.code.type.impl;
 
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandleInfo;
 import java.lang.invoke.MethodHandles;
@@ -37,12 +37,12 @@
 
 import static java.util.stream.Collectors.joining;
 
-public final class MethodDescImpl implements MethodDesc {
+public final class MethodRefImpl implements MethodRef {
     final TypeElement refType;
     final String name;
     final FunctionType type;
 
-    public MethodDescImpl(TypeElement refType, String name, FunctionType type) {
+    public MethodRefImpl(TypeElement refType, String name, FunctionType type) {
         this.refType = refType;
         this.name = name;
         this.type = type;
@@ -74,7 +74,7 @@ public MethodHandle resolveToHandle(MethodHandles.Lookup l) throws ReflectiveOpe
         // @@@ kind
         Class<?> refC = resolve(l, refType);
 
-        MethodType mt = MethodDesc.toNominalDescriptor(type).resolveConstantDesc(l);
+        MethodType mt = MethodRef.toNominalDescriptor(type).resolveConstantDesc(l);
 
         MethodHandle mh = null;
         ReflectiveOperationException c = null;
@@ -123,7 +123,7 @@ public boolean equals(Object o) {
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
 
-        MethodDescImpl that = (MethodDescImpl) o;
+        MethodRefImpl that = (MethodRefImpl) o;
 
         if (!refType.equals(that.refType)) return false;
         if (!name.equals(that.name)) return false;
diff --git a/src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/RecordTypeDescImpl.java b/src/java.base/share/classes/java/lang/reflect/code/type/impl/RecordTypeRefImpl.java
similarity index 77%
rename from src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/RecordTypeDescImpl.java
rename to src/java.base/share/classes/java/lang/reflect/code/type/impl/RecordTypeRefImpl.java
index b61546dac5b..c2f86dd6491 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/descriptor/impl/RecordTypeDescImpl.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/impl/RecordTypeRefImpl.java
@@ -23,20 +23,20 @@
  * questions.
  */
 
-package java.lang.reflect.code.descriptor.impl;
+package java.lang.reflect.code.type.impl;
 
-import java.lang.reflect.code.descriptor.MethodDesc;
-import java.lang.reflect.code.descriptor.RecordTypeDesc;
+import java.lang.reflect.code.type.MethodRef;
+import java.lang.reflect.code.type.RecordTypeRef;
 import java.lang.reflect.code.TypeElement;
 import java.util.List;
 
 import static java.util.stream.Collectors.joining;
 
-public final class RecordTypeDescImpl implements RecordTypeDesc {
+public final class RecordTypeRefImpl implements RecordTypeRef {
     final TypeElement recordType;
-    final List<ComponentDesc> components;
+    final List<ComponentRef> components;
 
-    public RecordTypeDescImpl(TypeElement recordType, List<ComponentDesc> components) {
+    public RecordTypeRefImpl(TypeElement recordType, List<ComponentRef> components) {
         this.recordType = recordType;
         this.components = List.copyOf(components);
     }
@@ -47,18 +47,18 @@ public TypeElement recordType() {
     }
 
     @Override
-    public List<ComponentDesc> components() {
+    public List<ComponentRef> components() {
         return components;
     }
 
     @Override
-    public MethodDesc methodForComponent(int i) {
+    public MethodRef methodForComponent(int i) {
         if (i < 0 || i >= components.size()) {
             throw new IndexOutOfBoundsException();
         }
 
-        ComponentDesc c = components.get(i);
-        return MethodDesc.method(recordType, c.name(), c.type());
+        ComponentRef c = components.get(i);
+        return MethodRef.method(recordType, c.name(), c.type());
     }
 
     @Override
diff --git a/src/java.base/share/classes/java/lang/reflect/code/type/package-info.java b/src/java.base/share/classes/java/lang/reflect/code/type/package-info.java
index 6f6e53cf3f8..af07f8d6459 100644
--- a/src/java.base/share/classes/java/lang/reflect/code/type/package-info.java
+++ b/src/java.base/share/classes/java/lang/reflect/code/type/package-info.java
@@ -24,6 +24,6 @@
  */
 
 /**
- * Types for code models.
+ * Types and symbolic references for code models.
  */
 package java.lang.reflect.code.type;
\ No newline at end of file
diff --git a/src/java.base/share/classes/module-info.java b/src/java.base/share/classes/module-info.java
index 4d99a57c01a..1b07f27bae7 100644
--- a/src/java.base/share/classes/module-info.java
+++ b/src/java.base/share/classes/module-info.java
@@ -93,7 +93,6 @@
     exports java.lang.reflect.code;
     exports java.lang.reflect.code.analysis;
     exports java.lang.reflect.code.bytecode;
-    exports java.lang.reflect.code.descriptor;
     exports java.lang.reflect.code.interpreter;
     exports java.lang.reflect.code.op;
     exports java.lang.reflect.code.parser;
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java
index 918bc3d1cc3..a38fad604ce 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ReflectMethods.java
@@ -81,13 +81,7 @@
 import jdk.internal.java.lang.reflect.code.*;
 import jdk.internal.java.lang.reflect.code.op.CoreOps;
 import jdk.internal.java.lang.reflect.code.op.ExtendedOps;
-import jdk.internal.java.lang.reflect.code.descriptor.FieldDesc;
-import jdk.internal.java.lang.reflect.code.descriptor.MethodDesc;
-import jdk.internal.java.lang.reflect.code.descriptor.RecordTypeDesc;
-import jdk.internal.java.lang.reflect.code.type.FunctionType;
-import jdk.internal.java.lang.reflect.code.type.JavaType;
-import jdk.internal.java.lang.reflect.code.type.TupleType;
-import jdk.internal.java.lang.reflect.code.type.VarType;
+import jdk.internal.java.lang.reflect.code.type.*;
 import jdk.internal.java.lang.reflect.code.type.impl.JavaTypeImpl;
 
 import javax.lang.model.element.Modifier;
@@ -651,7 +645,7 @@ Value convert(Value exprVal, Type target) {
         }
 
         Value box(Value valueExpr, Type box) {
-            MethodDesc boxMethod = MethodDesc.method(typeToTypeElement(box), names.valueOf.toString(),
+            MethodRef boxMethod = MethodRef.method(typeToTypeElement(box), names.valueOf.toString(),
                     FunctionType.functionType(typeToTypeElement(box), typeToTypeElement(types.unboxedType(box))));
             return append(CoreOps.invoke(boxMethod, valueExpr));
         }
@@ -662,7 +656,7 @@ Value unbox(Value valueExpr, Type box, Type primitive, Type unboxedType) {
                 unboxedType = primitive;
                 valueExpr = append(CoreOps.cast(typeToTypeElement(types.boxedClass(unboxedType).type), valueExpr));
             }
-            MethodDesc unboxMethod = MethodDesc.method(typeToTypeElement(box),
+            MethodRef unboxMethod = MethodRef.method(typeToTypeElement(box),
                     unboxedType.tsym.name.append(names.Value).toString(),
                     FunctionType.functionType(typeToTypeElement(unboxedType), typeToTypeElement(box)));
             return append(CoreOps.invoke(unboxMethod, valueExpr));
@@ -705,7 +699,7 @@ public void visitAssign(JCAssign tree) {
                             append(CoreOps.varStore(varOp, result));
                         }
                         case FIELD -> {
-                            FieldDesc fd = symbolToFieldDesc(sym, symbolSiteType(sym));
+                            FieldRef fd = symbolToFieldRef(sym, symbolSiteType(sym));
                             if (sym.isStatic()) {
                                 append(CoreOps.fieldStore(fd, result));
                             } else {
@@ -728,11 +722,11 @@ public void visitAssign(JCAssign tree) {
                     result = toValue(tree.rhs, target);
 
                     Symbol sym = assign.sym;
-                    FieldDesc fd = symbolToFieldDesc(sym, assign.selected.type);
+                    FieldRef fr = symbolToFieldRef(sym, assign.selected.type);
                     if (sym.isStatic()) {
-                        append(CoreOps.fieldStore(fd, result));
+                        append(CoreOps.fieldStore(fr, result));
                     } else {
-                        append(CoreOps.fieldStore(fd, receiver, result));
+                        append(CoreOps.fieldStore(fr, receiver, result));
                     }
                     break;
                 }
@@ -798,22 +792,22 @@ void applyCompoundAssign(JCTree.JCExpression lhs, Function<Value, Value> scanRhs
                             append(CoreOps.varStore(varOp, r));
                         }
                         case FIELD -> {
-                            FieldDesc fd = symbolToFieldDesc(sym, symbolSiteType(sym));
+                            FieldRef fr = symbolToFieldRef(sym, symbolSiteType(sym));
 
                             Op.Result lhsOpValue;
                             TypeElement resultType = typeToTypeElement(sym.type);
                             if (sym.isStatic()) {
-                                lhsOpValue = append(CoreOps.fieldLoad(resultType, fd));
+                                lhsOpValue = append(CoreOps.fieldLoad(resultType, fr));
                             } else {
-                                lhsOpValue = append(CoreOps.fieldLoad(resultType, fd, thisValue()));
+                                lhsOpValue = append(CoreOps.fieldLoad(resultType, fr, thisValue()));
                             }
                             // Scan the rhs
                             Value r = scanRhs.apply(lhsOpValue);
 
                             if (sym.isStatic()) {
-                                append(CoreOps.fieldStore(fd, r));
+                                append(CoreOps.fieldStore(fr, r));
                             } else {
-                                append(CoreOps.fieldStore(fd, thisValue(), r));
+                                append(CoreOps.fieldStore(fr, thisValue(), r));
                             }
                         }
                         default -> {
@@ -828,22 +822,22 @@ void applyCompoundAssign(JCTree.JCExpression lhs, Function<Value, Value> scanRhs
                     Value receiver = toValue(assign.selected);
 
                     Symbol sym = assign.sym;
-                    FieldDesc fd = symbolToFieldDesc(sym, assign.selected.type);
+                    FieldRef fr = symbolToFieldRef(sym, assign.selected.type);
 
                     Op.Result lhsOpValue;
                     TypeElement resultType = typeToTypeElement(sym.type);
                     if (sym.isStatic()) {
-                        lhsOpValue = append(CoreOps.fieldLoad(resultType, fd));
+                        lhsOpValue = append(CoreOps.fieldLoad(resultType, fr));
                     } else {
-                        lhsOpValue = append(CoreOps.fieldLoad(resultType, fd, receiver));
+                        lhsOpValue = append(CoreOps.fieldLoad(resultType, fr, receiver));
                     }
                     // Scan the rhs
                     Value r = scanRhs.apply(lhsOpValue);
 
                     if (sym.isStatic()) {
-                        append(CoreOps.fieldStore(fd, r));
+                        append(CoreOps.fieldStore(fr, r));
                     } else {
-                        append(CoreOps.fieldStore(fd, receiver, r));
+                        append(CoreOps.fieldStore(fr, receiver, r));
                     }
                 }
                 case INDEXED -> {
@@ -882,12 +876,12 @@ public void visitIdent(JCIdent tree) {
                     if (sym.name.equals(names._this)) {
                         result = thisValue();
                     } else {
-                        FieldDesc fd = symbolToFieldDesc(sym, symbolSiteType(sym));
+                        FieldRef fr = symbolToFieldRef(sym, symbolSiteType(sym));
                         TypeElement resultType = typeToTypeElement(sym.type);
                         if (sym.isStatic()) {
-                            result = append(CoreOps.fieldLoad(resultType, fd));
+                            result = append(CoreOps.fieldLoad(resultType, fr));
                         } else {
-                            result = append(CoreOps.fieldLoad(resultType, fd, thisValue()));
+                            result = append(CoreOps.fieldLoad(resultType, fr, thisValue()));
                         }
                     }
                 }
@@ -932,13 +926,13 @@ public void visitSelect(JCFieldAccess tree) {
                 Symbol sym = tree.sym;
                 switch (sym.getKind()) {
                     case FIELD, ENUM_CONSTANT -> {
-                        FieldDesc fd = symbolToFieldDesc(sym, qualifierTarget.hasTag(NONE) ?
+                        FieldRef fr = symbolToFieldRef(sym, qualifierTarget.hasTag(NONE) ?
                                 tree.selected.type : qualifierTarget);
                         TypeElement resultType = typeToTypeElement(types.memberType(tree.selected.type, sym));
                         if (sym.isStatic()) {
-                            result = append(CoreOps.fieldLoad(resultType, fd));
+                            result = append(CoreOps.fieldLoad(resultType, fr));
                         } else {
-                            result = append(CoreOps.fieldLoad(resultType, fd, receiver));
+                            result = append(CoreOps.fieldLoad(resultType, fr, receiver));
                         }
                     }
                     case INTERFACE, CLASS, ENUM -> {
@@ -971,7 +965,7 @@ public void visitApply(JCTree.JCMethodInvocation tree) {
 
             // @@@ super.xyz(...) calls
             // Modeling with a call operation would result in the receiver type differing from that
-            // in the method descriptor, perhaps that is sufficient?
+            // in the method reference, perhaps that is sufficient?
 
             JCTree meth = TreeInfo.skipParens(tree.meth);
             switch (meth.getTag()) {
@@ -986,8 +980,8 @@ public void visitApply(JCTree.JCMethodInvocation tree) {
 
                     args.addAll(scanMethodArguments(tree.args, tree.meth.type, tree.varargsElement));
 
-                    MethodDesc md = symbolToErasedMethodDesc(sym, symbolSiteType(sym));
-                    Value res = append(CoreOps.invoke(typeToTypeElement(meth.type.getReturnType()), md, args));
+                    MethodRef mr = symbolToErasedMethodRef(sym, symbolSiteType(sym));
+                    Value res = append(CoreOps.invoke(typeToTypeElement(meth.type.getReturnType()), mr, args));
                     if (sym.type.getReturnType().getTag() != TypeTag.VOID) {
                         result = res;
                     }
@@ -1007,9 +1001,9 @@ public void visitApply(JCTree.JCMethodInvocation tree) {
 
                     args.addAll(scanMethodArguments(tree.args, tree.meth.type, tree.varargsElement));
 
-                    MethodDesc md = symbolToErasedMethodDesc(sym, qualifierTarget.hasTag(NONE) ?
+                    MethodRef mr = symbolToErasedMethodRef(sym, qualifierTarget.hasTag(NONE) ?
                             access.selected.type : qualifierTarget);
-                    Value res = append(CoreOps.invoke(typeToTypeElement(meth.type.getReturnType()), md, args));
+                    Value res = append(CoreOps.invoke(typeToTypeElement(meth.type.getReturnType()), mr, args));
                     if (sym.type.getReturnType().getTag() != TypeTag.VOID) {
                         result = res;
                     }
@@ -1076,8 +1070,8 @@ public void visitTypeCast(JCTree.JCTypeCast tree) {
                 result = v;
             } else {
                 // Reference cast
-                JavaType descriptor = typeToTypeElement(types.erasure(type));
-                result = append(CoreOps.cast(typeToTypeElement(type), descriptor, v));
+                JavaType jt = typeToTypeElement(types.erasure(type));
+                result = append(CoreOps.cast(typeToTypeElement(type), jt, v));
             }
         }
 
@@ -1135,7 +1129,7 @@ public void visitRecordPattern(JCTree.JCRecordPattern record) {
                         nestedValues.add(toValue(jcPattern));
                     }
 
-                    result = append(ExtendedOps.recordPattern(symbolToRecordTypeDesc(record.record), nestedValues));
+                    result = append(ExtendedOps.recordPattern(symbolToRecordTypeRef(record.record), nestedValues));
                 }
 
                 Value toValue(JCTree tree) {
@@ -1208,13 +1202,13 @@ public void visitNewClass(JCTree.JCNewClass tree) {
                 args.add(outerInstance);
             }
 
-            // Create erased method type descriptor for constructor, where
+            // Create erased method type reference for constructor, where
             // the return type declares the class to instantiate
             // @@@ require symbol site type?
-            MethodDesc methodDesc = symbolToErasedMethodDesc(tree.constructor);
+            MethodRef methodRef = symbolToErasedMethodRef(tree.constructor);
             FunctionType constructorType = FunctionType.functionType(
                     symbolToErasedDesc(tree.constructor.owner),
-                    methodDesc.type().parameterTypes());
+                    methodRef.type().parameterTypes());
 
             args.addAll(scanMethodArguments(tree.args, tree.constructorType, tree.varargsElement));
 
@@ -1441,7 +1435,7 @@ public void visitSwitchExpression(JCTree.JCSwitchExpression tree) {
                             localResult = append(CoreOps.eq(localTarget, expr));
                         } else {
                             localResult = append(CoreOps.invoke(
-                                    MethodDesc.method(Objects.class, "equals", boolean.class, Object.class, Object.class),
+                                    MethodRef.method(Objects.class, "equals", boolean.class, Object.class, Object.class),
                                     localTarget, expr));
                         }
                     } else {
@@ -1457,7 +1451,7 @@ public void visitSwitchExpression(JCTree.JCSwitchExpression tree) {
                                 labelResult = append(CoreOps.eq(localTarget, expr));
                             } else {
                                 labelResult = append(CoreOps.invoke(
-                                        MethodDesc.method(Objects.class, "equals", boolean.class, Object.class, Object.class),
+                                        MethodRef.method(Objects.class, "equals", boolean.class, Object.class, Object.class),
                                         localTarget, expr));
                             }
 
@@ -2215,38 +2209,38 @@ Type symbolSiteType(Symbol s) {
             return isMember ? currentClassSym.type : s.owner.type;
         }
 
-        FieldDesc symbolToFieldDesc(Symbol s, Type site) {
+        FieldRef symbolToFieldRef(Symbol s, Type site) {
             // @@@ Made Gen::binaryQualifier public, duplicate logic?
-            // Ensure correct qualifying class is used in descriptor, see JLS 13.1
+            // Ensure correct qualifying class is used in the reference, see JLS 13.1
             // https://docs.oracle.com/javase/specs/jls/se20/html/jls-13.html#jls-13.1
-            return symbolToFieldDesc(gen.binaryQualifier(s, site));
+            return symbolToFieldRef(gen.binaryQualifier(s, site));
         }
 
-        FieldDesc symbolToFieldDesc(Symbol s) {
-            return FieldDesc.field(
+        FieldRef symbolToFieldRef(Symbol s) {
+            return FieldRef.field(
                     typeToTypeElement(s.owner.type),
                     s.name.toString(),
                     typeToTypeElement(s.type));
         }
 
-        MethodDesc symbolToMethodDesc(Symbol s) {
-            return MethodDesc.method(
+        MethodRef symbolToMethodRef(Symbol s) {
+            return MethodRef.method(
                     typeToTypeElement(s.owner.type),
                     s.name.toString(),
                     typeToTypeElement(s.type.getReturnType()),
                     s.type.getParameterTypes().stream().map(this::typeToTypeElement).toArray(TypeElement[]::new));
         }
 
-        MethodDesc symbolToErasedMethodDesc(Symbol s, Type site) {
+        MethodRef symbolToErasedMethodRef(Symbol s, Type site) {
             // @@@ Made Gen::binaryQualifier public, duplicate logic?
-            // Ensure correct qualifying class is used in descriptor, see JLS 13.1
+            // Ensure correct qualifying class is used in the reference, see JLS 13.1
             // https://docs.oracle.com/javase/specs/jls/se20/html/jls-13.html#jls-13.1
-            return symbolToErasedMethodDesc(gen.binaryQualifier(s, site));
+            return symbolToErasedMethodRef(gen.binaryQualifier(s, site));
         }
 
-        MethodDesc symbolToErasedMethodDesc(Symbol s) {
+        MethodRef symbolToErasedMethodRef(Symbol s) {
             Type erasedType = s.erasure(types);
-            return MethodDesc.method(
+            return MethodRef.method(
                     typeToTypeElement(s.owner.erasure(types)),
                     s.name.toString(),
                     typeToTypeElement(erasedType.getReturnType()),
@@ -2263,12 +2257,12 @@ FunctionType typeToFunctionType(Type t) {
                     t.getParameterTypes().stream().map(this::typeToTypeElement).toArray(TypeElement[]::new));
         }
 
-        RecordTypeDesc symbolToRecordTypeDesc(Symbol.ClassSymbol s) {
+        RecordTypeRef symbolToRecordTypeRef(Symbol.ClassSymbol s) {
             TypeElement recordType = typeToTypeElement(s.type);
-            List<RecordTypeDesc.ComponentDesc> components = s.getRecordComponents().stream()
-                    .map(rc -> new RecordTypeDesc.ComponentDesc(typeToTypeElement(rc.type), rc.name.toString()))
+            List<RecordTypeRef.ComponentRef> components = s.getRecordComponents().stream()
+                    .map(rc -> new RecordTypeRef.ComponentRef(typeToTypeElement(rc.type), rc.name.toString()))
                     .toList();
-            return RecordTypeDesc.recordType(recordType, components);
+            return RecordTypeRef.recordType(recordType, components);
         }
 
         Op defaultValue(Type t) {
@@ -2317,7 +2311,7 @@ public boolean checkDenotableInTypeDesc(Type t) {
 
         /**
          * A type visitor that descends into the given type looking for types that are non-denotable
-         * in IR type descriptors. Examples of such types are: type-variables (regular or captured),
+         * in code model types. Examples of such types are: type-variables (regular or captured),
          * wildcard type argument, intersection types, union types. The visit methods return false
          * as soon as a non-denotable type is encountered and true otherwise. (see {@link Check#checkDenotable(Type)}.
          */
@@ -2329,7 +2323,7 @@ public Boolean visitType(Type t, Void s) {
             @Override
             public Boolean visitClassType(ClassType t, Void s) {
                 if (t.isUnion() || t.isIntersection()) {
-                    // union an intersections cannot be denoted in IR type descriptors
+                    // union and intersections cannot be denoted in code model types
                     return false;
                 }
                 // @@@ What about enclosing types?
@@ -2344,13 +2338,13 @@ public Boolean visitClassType(ClassType t, Void s) {
 
             @Override
             public Boolean visitTypeVar(TypeVar t, Void s) {
-                // type variables cannot be denoted in IR type descriptors
+                // type variables cannot be denoted in code model types
                 return false;
             }
 
             @Override
             public Boolean visitWildcardType(WildcardType t, Void s) {
-                // wildcards cannot de denoted in IR type descriptors
+                // wildcards cannot de denoted in code model types
                 return false;
             }
 
diff --git a/test/jdk/java/lang/reflect/code/TestClosureOps.java b/test/jdk/java/lang/reflect/code/TestClosureOps.java
index 9b25bef4c9b..2c812ec9004 100644
--- a/test/jdk/java/lang/reflect/code/TestClosureOps.java
+++ b/test/jdk/java/lang/reflect/code/TestClosureOps.java
@@ -33,7 +33,7 @@
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.Op;
 import java.lang.reflect.code.Quoted;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.interpreter.Interpreter;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.code.type.JavaType;
@@ -52,7 +52,7 @@
 public class TestClosureOps {
 
     static class Builder {
-        static final MethodDesc ACCEPT_METHOD = MethodDesc.method(type(TestClosureOps.Builder.class), "accept",
+        static final MethodRef ACCEPT_METHOD = MethodRef.method(type(TestClosureOps.Builder.class), "accept",
                 INT, CoreOps.QuotedOp.QUOTED_TYPE);
 
         static int accept(Quoted c) {
@@ -67,12 +67,12 @@ static int accept(Quoted c) {
 
     @Test
     public void testQuotedWithCapture() {
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(block -> {
                     Block.Parameter i = block.parameters().get(0);
 
-                    // functional descriptor = (int)int
+                    // functional type = (int)int
                     // op descriptor = ()Quoted<ClosureOp>
                     CoreOps.QuotedOp qop = quoted(block.parentBody(), qblock -> {
                         return closure(qblock.parentBody(), functionType(INT, INT))
@@ -99,12 +99,12 @@ public void testQuotedWithCapture() {
 
     @Test
     public void testWithCapture() {
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(block -> {
                     Block.Parameter i = block.parameters().get(0);
 
-                    // functional descriptor = (int)int
+                    // functional type = (int)int
                     //   captures i
                     CoreOps.ClosureOp closure = CoreOps.closure(block.parentBody(),
                                     functionType(INT, INT))
diff --git a/test/jdk/java/lang/reflect/code/TestExceptionRegionOps.java b/test/jdk/java/lang/reflect/code/TestExceptionRegionOps.java
index 80831c80767..d61ca16e0d9 100644
--- a/test/jdk/java/lang/reflect/code/TestExceptionRegionOps.java
+++ b/test/jdk/java/lang/reflect/code/TestExceptionRegionOps.java
@@ -30,7 +30,7 @@
 import org.testng.annotations.Test;
 
 import java.lang.reflect.code.op.CoreOps;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.interpreter.Interpreter;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.code.type.JavaType;
@@ -465,7 +465,7 @@ public void testCatchFinally() {
         });
     }
 
-    static final MethodDesc INT_CONSUMER_ACCEPT_METHOD = MethodDesc.method(type(IntConsumer.class), "accept",
+    static final MethodRef INT_CONSUMER_ACCEPT_METHOD = MethodRef.method(type(IntConsumer.class), "accept",
             VOID, INT);
 
     static Consumer<IntConsumer> testConsumer(Consumer<IntConsumer> actualR, Consumer<IntConsumer> expectedR) {
diff --git a/test/jdk/java/lang/reflect/code/TestInline.java b/test/jdk/java/lang/reflect/code/TestInline.java
index 53ecc646110..161db23ee90 100644
--- a/test/jdk/java/lang/reflect/code/TestInline.java
+++ b/test/jdk/java/lang/reflect/code/TestInline.java
@@ -50,7 +50,7 @@ public void testInline() {
         Quoted q = (int a, int b) -> a + b;
         CoreOps.ClosureOp cop = (CoreOps.ClosureOp) q.op();
 
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(fblock -> {
                     Block.Parameter i = fblock.parameters().get(0);
@@ -72,7 +72,7 @@ public void testInlineVar() {
         Quoted q = (int a, int b) -> a + b;
         CoreOps.ClosureOp cop = (CoreOps.ClosureOp) q.op();
 
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(fblock -> {
                     Block.Parameter i = fblock.parameters().get(0);
@@ -116,7 +116,7 @@ public void testInlineLowerMultipleReturn() {
         });
         lcop.writeTo(System.out);
 
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(fblock -> {
                     Block.Parameter i = fblock.parameters().get(0);
@@ -152,7 +152,7 @@ public void testInlineLowerMultipleReturnVar() {
         });
         lcop.writeTo(System.out);
 
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(fblock -> {
                     Block.Parameter i = fblock.parameters().get(0);
@@ -218,7 +218,7 @@ public void testInlineVoid() {
         };
         CoreOps.ClosureOp cop = (CoreOps.ClosureOp) q.op();
 
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(JavaType.VOID, JavaType.type(int[].class)))
                 .body(fblock -> {
                     Block.Parameter a = fblock.parameters().get(0);
diff --git a/test/jdk/java/lang/reflect/code/TestLambdaOps.java b/test/jdk/java/lang/reflect/code/TestLambdaOps.java
index 919303fcbf5..f9c4acd6212 100644
--- a/test/jdk/java/lang/reflect/code/TestLambdaOps.java
+++ b/test/jdk/java/lang/reflect/code/TestLambdaOps.java
@@ -33,7 +33,7 @@
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.op.CoreOps.FuncOp;
 import java.lang.reflect.code.op.CoreOps.LambdaOp;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.interpreter.Interpreter;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
@@ -54,7 +54,7 @@
 @Test
 public class TestLambdaOps {
     static class Builder {
-        static final MethodDesc ACCEPT_METHOD = MethodDesc.method(type(Builder.class), "accept",
+        static final MethodRef ACCEPT_METHOD = MethodRef.method(type(Builder.class), "accept",
                 INT, CoreOps.QuotedOp.QUOTED_TYPE);
 
         static int accept(Quoted l) {
@@ -69,13 +69,13 @@ static int accept(Quoted l) {
 
     @Test
     public void testQuotedWithCapture() {
-        // functional descriptor = (int)int
+        // functional type = (int)int
         FuncOp f = func("f", functionType(INT, INT))
                 .body(block -> {
                     Block.Parameter i = block.parameters().get(0);
 
-                    // functional descriptor = (int)int
-                    // op descriptor = ()Quoted<LambdaOp>
+                    // functional type = (int)int
+                    // op type = ()Quoted<LambdaOp>
                     QuotedOp qop = quoted(block.parentBody(), qblock -> {
                         return lambda(qblock.parentBody(),
                                 functionType(INT, INT), type(IntUnaryOperator.class))
@@ -100,19 +100,19 @@ public void testQuotedWithCapture() {
         Assert.assertEquals(ir, 43);
     }
 
-    static final MethodDesc INT_UNARY_OPERATOR_METHOD = MethodDesc.method(
+    static final MethodRef INT_UNARY_OPERATOR_METHOD = MethodRef.method(
             IntUnaryOperator.class, "applyAsInt",
             int.class, int.class);
 
     @Test
     public void testWithCapture() {
-        // functional descriptor = (int)int
+        // functional type = (int)int
         FuncOp f = func("f", functionType(INT, INT))
                 .body(block -> {
                     Block.Parameter i = block.parameters().get(0);
 
-                    // functional descriptor = (int)int
-                    // op descriptor = ()IntUnaryOperator
+                    // functional type = (int)int
+                    // op type = ()IntUnaryOperator
                     //   captures i
                     LambdaOp lambda = lambda(block.parentBody(),
                             functionType(INT, INT), type(IntUnaryOperator.class))
diff --git a/test/jdk/java/lang/reflect/code/TestLinqUsingQuoted.java b/test/jdk/java/lang/reflect/code/TestLinqUsingQuoted.java
index a026026fe94..a7b1dfe1639 100644
--- a/test/jdk/java/lang/reflect/code/TestLinqUsingQuoted.java
+++ b/test/jdk/java/lang/reflect/code/TestLinqUsingQuoted.java
@@ -27,14 +27,14 @@
 import java.lang.reflect.code.Op;
 import java.lang.reflect.code.Quoted;
 import java.lang.reflect.code.Value;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.interpreter.Interpreter;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.code.type.JavaType;
 import java.lang.reflect.code.TypeElement;
 import java.util.stream.Stream;
 
-import static java.lang.reflect.code.descriptor.MethodDesc.method;
+import static java.lang.reflect.code.type.MethodRef.method;
 import static java.lang.reflect.code.op.CoreOps.*;
 import static java.lang.reflect.code.type.FunctionType.functionType;
 
@@ -81,7 +81,7 @@ private Queryable insertQuery(TypeElement et, String name, ClosureOp c) {
 
                     Op.Result quotedLambda = block.op(quoted(block.parentBody(), qblock -> c));
 
-                    MethodDesc md = method(qp.queryableType(), name,
+                    MethodRef md = method(qp.queryableType(), name,
                             functionType(qp.queryableType(), QuotedOp.QUOTED_TYPE));
                     Op.Result queryable = block.op(invoke(md, query, quotedLambda));
 
@@ -116,7 +116,7 @@ private QueryResult insertQueryResult(String name, TypeElement resultType) {
             FuncOp nextQueryExpression = func("queryresult",
                     functionType(qp.queryResultType(), currentQueryExpression.invokableType().parameterTypes()))
                     .body(b -> b.inline(currentQueryExpression, b.parameters(), (block, query) -> {
-                        MethodDesc md = method(qp.queryableType(), name, functionType(qp.queryResultType()));
+                        MethodRef md = method(qp.queryableType(), name, functionType(qp.queryResultType()));
                         Op.Result queryResult = block.op(invoke(md, query));
 
                         block.op(_return(queryResult));
@@ -159,8 +159,8 @@ public static final class TestQueryable implements Queryable {
             this.provider = provider;
 
             // Initial expression is an identity function
-            var funDescriptor = functionType(provider().queryableType(), provider().queryableType());
-            this.expression = func("query", funDescriptor)
+            var funType = functionType(provider().queryableType(), provider().queryableType());
+            this.expression = func("query", funType)
                     .body(b -> b.op(_return(b.parameters().get(0))));
         }
 
diff --git a/test/jdk/java/lang/reflect/code/TestLocalTransformationsAdaption.java b/test/jdk/java/lang/reflect/code/TestLocalTransformationsAdaption.java
index f892b5159d8..a3d834d0f57 100644
--- a/test/jdk/java/lang/reflect/code/TestLocalTransformationsAdaption.java
+++ b/test/jdk/java/lang/reflect/code/TestLocalTransformationsAdaption.java
@@ -29,8 +29,8 @@
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.Op;
 import java.lang.reflect.code.Value;
-import java.lang.reflect.code.descriptor.FieldDesc;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.FieldRef;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.interpreter.Interpreter;
 import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Method;
@@ -49,7 +49,7 @@
 import static java.lang.reflect.code.op.CoreOps.constant;
 import static java.lang.reflect.code.op.CoreOps.fieldLoad;
 import static java.lang.reflect.code.op.CoreOps.newArray;
-import static java.lang.reflect.code.descriptor.MethodDesc.method;
+import static java.lang.reflect.code.type.MethodRef.method;
 import static java.lang.reflect.code.type.JavaType.*;
 
 /*
@@ -170,7 +170,7 @@ case CoreOps.ReturnOp returnOp when getNearestInvokeableAncestorOp(returnOp) ins
 
     static void printConstantString(Function<Op, Op.Result> opBuilder, String s) {
         Op.Result c = opBuilder.apply(constant(J_L_STRING, s));
-        Value System_out = opBuilder.apply(fieldLoad(FieldDesc.field(System.class, "out", PrintStream.class)));
+        Value System_out = opBuilder.apply(fieldLoad(FieldRef.field(System.class, "out", PrintStream.class)));
         opBuilder.apply(CoreOps.invoke(method(PrintStream.class, "println", void.class, String.class), System_out, c));
     }
 
@@ -286,7 +286,7 @@ static void printCall(CopyContext cc, CoreOps.InvokeOp invokeOp, Function<Op, Op
         Op.Result formatString = opBuilder.apply(
                 constant(J_L_STRING,
                         prefix + ": " + invokeOp.invokeDescriptor() + "(" + formatString(adaptedInvokeOperands) + ")%n"));
-        Value System_out = opBuilder.apply(fieldLoad(FieldDesc.field(System.class, "out", PrintStream.class)));
+        Value System_out = opBuilder.apply(fieldLoad(FieldRef.field(System.class, "out", PrintStream.class)));
         opBuilder.apply(
                 CoreOps.invoke(method(PrintStream.class, "printf", PrintStream.class, String.class, Object[].class),
                         System_out, formatString, formatArray));
@@ -328,7 +328,7 @@ static String formatString(TypeElement t) {
     }
 
 
-    static final MethodDesc ADD_METHOD = MethodDesc.method(
+    static final MethodRef ADD_METHOD = MethodRef.method(
             TestLocalTransformationsAdaption.class, "add",
             int.class, int.class, int.class);
 
@@ -336,7 +336,7 @@ static int add(int a, int b) {
         return a + b;
     }
 
-    static final MethodDesc ADD_WITH_PRINT_METHOD = MethodDesc.method(
+    static final MethodRef ADD_WITH_PRINT_METHOD = MethodRef.method(
             TestLocalTransformationsAdaption.class, "addWithPrint",
             int.class, int.class, int.class);
 
diff --git a/test/jdk/java/lang/reflect/code/ad/ForwardDifferentiation.java b/test/jdk/java/lang/reflect/code/ad/ForwardDifferentiation.java
index 8992a524a26..4d74602aa78 100644
--- a/test/jdk/java/lang/reflect/code/ad/ForwardDifferentiation.java
+++ b/test/jdk/java/lang/reflect/code/ad/ForwardDifferentiation.java
@@ -25,7 +25,7 @@
 import java.lang.reflect.code.CopyContext;
 import java.lang.reflect.code.Op;
 import java.lang.reflect.code.Value;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.type.FunctionType;
 import java.lang.reflect.code.type.JavaType;
@@ -122,8 +122,8 @@ void processBlocks(Block.Builder block) {
 
     static final JavaType J_L_MATH = JavaType.type(Math.class);
     static final FunctionType D_D = FunctionType.functionType(DOUBLE, DOUBLE);
-    static final MethodDesc J_L_MATH_SIN = MethodDesc.method(J_L_MATH, "sin", D_D);
-    static final MethodDesc J_L_MATH_COS = MethodDesc.method(J_L_MATH, "cos", D_D);
+    static final MethodRef J_L_MATH_SIN = MethodRef.method(J_L_MATH, "sin", D_D);
+    static final MethodRef J_L_MATH_COS = MethodRef.method(J_L_MATH, "cos", D_D);
 
     Value diffOp(Block.Builder block, Op op) {
         // Switch on the op, using pattern matching
@@ -171,7 +171,7 @@ Value diffOp(Block.Builder block, Op op) {
                 yield zero;
             }
             case CoreOps.InvokeOp c -> {
-                MethodDesc md = c.invokeDescriptor();
+                MethodRef md = c.invokeDescriptor();
                 String operationName = null;
                 if (md.refType().equals(J_L_MATH)) {
                     operationName = md.name();
diff --git a/test/jdk/java/lang/reflect/code/linq/Queryable.java b/test/jdk/java/lang/reflect/code/linq/Queryable.java
index b706859d8c1..732c33be316 100644
--- a/test/jdk/java/lang/reflect/code/linq/Queryable.java
+++ b/test/jdk/java/lang/reflect/code/linq/Queryable.java
@@ -22,11 +22,11 @@
  */
 
 import java.lang.reflect.code.Op;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.type.JavaType;
 import java.util.stream.Stream;
 
-import static java.lang.reflect.code.descriptor.MethodDesc.method;
+import static java.lang.reflect.code.type.MethodRef.method;
 import static java.lang.reflect.code.op.CoreOps.*;
 import static java.lang.reflect.code.type.FunctionType.functionType;
 import static java.lang.reflect.code.type.JavaType.type;
@@ -63,7 +63,7 @@ private Queryable<?> insertQuery(JavaType elementType, String methodName, Lambda
                 .body(b -> b.inline(queryExpression, b.parameters(), (block, query) -> {
                     Op.Result fi = block.op(lambdaOp);
 
-                    MethodDesc md = method(Queryable.TYPE, methodName,
+                    MethodRef md = method(Queryable.TYPE, methodName,
                             functionType(Queryable.TYPE, ((JavaType) lambdaOp.functionalInterface()).rawType()));
                     Op.Result queryable = block.op(invoke(queryableType, md, query, fi));
 
@@ -92,7 +92,7 @@ private QueryResult<?> insertQueryResult(JavaType resultType, String methodName)
         FuncOp queryResultExpression = func("queryResult",
                 functionType(queryResultType, queryExpression.invokableType().parameterTypes()))
                 .body(b -> b.inline(queryExpression, b.parameters(), (block, query) -> {
-                    MethodDesc md = method(Queryable.TYPE, methodName,
+                    MethodRef md = method(Queryable.TYPE, methodName,
                             functionType(QueryResult.TYPE));
                     Op.Result queryResult = block.op(invoke(queryResultType, md, query));
 
diff --git a/test/jdk/java/lang/reflect/code/linq/TestQueryProvider.java b/test/jdk/java/lang/reflect/code/linq/TestQueryProvider.java
index 79530cd17df..1a924286175 100644
--- a/test/jdk/java/lang/reflect/code/linq/TestQueryProvider.java
+++ b/test/jdk/java/lang/reflect/code/linq/TestQueryProvider.java
@@ -59,8 +59,8 @@ static final class TestQueryable<T> implements Queryable<T> {
 
             JavaType queryableType = type(Queryable.TYPE, elementType);
             // Initial expression is an identity function
-            var funDescriptor = functionType(queryableType, queryableType);
-            this.expression = func("query", funDescriptor)
+            var funType = functionType(queryableType, queryableType);
+            this.expression = func("query", funType)
                     .body(b -> b.op(_return(b.parameters().get(0))));
         }
 
diff --git a/test/jdk/java/lang/reflect/code/parser/TestParse.java b/test/jdk/java/lang/reflect/code/parser/TestParse.java
index 9d493d6b9bf..8c04709cd47 100644
--- a/test/jdk/java/lang/reflect/code/parser/TestParse.java
+++ b/test/jdk/java/lang/reflect/code/parser/TestParse.java
@@ -33,7 +33,7 @@
 import java.lang.reflect.code.Block;
 import java.lang.reflect.code.op.CoreOps;
 import java.lang.reflect.code.Op;
-import java.lang.reflect.code.descriptor.MethodDesc;
+import java.lang.reflect.code.type.MethodRef;
 import java.lang.reflect.code.parser.OpParser;
 import java.util.List;
 import java.util.function.IntUnaryOperator;
@@ -49,19 +49,19 @@
 
 public class TestParse {
 
-    static final MethodDesc INT_UNARY_OPERATOR_METHOD = MethodDesc.method(
+    static final MethodRef INT_UNARY_OPERATOR_METHOD = MethodRef.method(
             IntUnaryOperator.class, "applyAsInt",
             int.class, int.class);
 
     @Test
     public void testParseLambdaOp() {
-        // functional descriptor = (int)int
+        // functional type = (int)int
         CoreOps.FuncOp f = func("f", functionType(INT, INT))
                 .body(block -> {
                     Block.Parameter i = block.parameters().get(0);
 
-                    // functional descriptor = (int)int
-                    // op descriptor = ()IntUnaryOperator
+                    // functional type = (int)int
+                    // op type = ()IntUnaryOperator
                     //   captures i
                     CoreOps.LambdaOp lambda = lambda(block.parentBody(),
                             functionType(INT, INT), type(IntUnaryOperator.class))
diff --git a/test/jdk/java/lang/reflect/code/descriptors/TestDescriptors.java b/test/jdk/java/lang/reflect/code/type/TestReferences.java
similarity index 67%
rename from test/jdk/java/lang/reflect/code/descriptors/TestDescriptors.java
rename to test/jdk/java/lang/reflect/code/type/TestReferences.java
index 516af84e4c2..9c2f844ba01 100644
--- a/test/jdk/java/lang/reflect/code/descriptors/TestDescriptors.java
+++ b/test/jdk/java/lang/reflect/code/type/TestReferences.java
@@ -25,17 +25,19 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
-import java.lang.reflect.code.descriptor.*;
+import java.lang.reflect.code.type.FieldRef;
+import java.lang.reflect.code.type.MethodRef;
+import java.lang.reflect.code.type.RecordTypeRef;
 
 /*
  * @test
- * @run testng TestDescriptors
+ * @run testng TestReferences
  */
 
-public class TestDescriptors {
+public class TestReferences {
 
     @DataProvider
-    public Object[][] methodDescriptors() {
+    public Object[][] methodRefs() {
         return new Object[][]{
                 {"a::b()void", "a", "b"},
                 {"a.b::c(int)int", "a.b", "c"},
@@ -48,17 +50,17 @@ public Object[][] methodDescriptors() {
         };
     }
 
-    @Test(dataProvider = "methodDescriptors")
-    public void testMethodDescriptor(String mds, String refType, String name) {
-        MethodDesc md = MethodDesc.ofString(mds);
-        Assert.assertEquals(md.toString(), mds);
-        Assert.assertEquals(md.refType().toString(), refType);
-        Assert.assertEquals(md.name(), name);
+    @Test(dataProvider = "methodRefs")
+    public void testMethodRef(String mds, String refType, String name) {
+        MethodRef mr = MethodRef.ofString(mds);
+        Assert.assertEquals(mr.toString(), mds);
+        Assert.assertEquals(mr.refType().toString(), refType);
+        Assert.assertEquals(mr.name(), name);
     }
 
 
     @DataProvider
-    public Object[][] fieldDescriptors() {
+    public Object[][] fieldRefs() {
         return new Object[][]{
                 {"a.b::c()int", "a.b", "c", "int"},
                 {"a.b.c::d()int", "a.b.c", "d", "int"},
@@ -66,18 +68,18 @@ public Object[][] fieldDescriptors() {
         };
     }
 
-    @Test(dataProvider = "fieldDescriptors")
-    public void testFieldDescriptor(String fds, String refType, String name, String type) {
-        FieldDesc fd = FieldDesc.ofString(fds);
-        Assert.assertEquals(fd.toString(), fds);
-        Assert.assertEquals(fd.refType().toString(), refType);
-        Assert.assertEquals(fd.name(), name);
-        Assert.assertEquals(fd.type().toString(), type);
+    @Test(dataProvider = "fieldRefs")
+    public void testFieldRef(String fds, String refType, String name, String type) {
+        FieldRef fr = FieldRef.ofString(fds);
+        Assert.assertEquals(fr.toString(), fds);
+        Assert.assertEquals(fr.refType().toString(), refType);
+        Assert.assertEquals(fr.name(), name);
+        Assert.assertEquals(fr.type().toString(), type);
     }
 
 
     @DataProvider
-    public Object[][] recordTypeDescriptors() {
+    public Object[][] recordTypeRefs() {
         return new Object[][]{
                 {"()A"},
                 {"(B b)A"},
@@ -86,10 +88,10 @@ public Object[][] recordTypeDescriptors() {
         };
     }
 
-    @Test(dataProvider = "recordTypeDescriptors")
-    public void testRecordTypeDescriptor(String rtds) {
-        RecordTypeDesc mtd = RecordTypeDesc.ofString(rtds);
-        Assert.assertEquals(mtd.toString(), rtds);
+    @Test(dataProvider = "recordTypeRefs")
+    public void testRecordTypeRef(String rtds) {
+        RecordTypeRef rtr = RecordTypeRef.ofString(rtds);
+        Assert.assertEquals(rtr.toString(), rtds);
     }
 
 }