1 package jdk.incubator.code.dialect.java;
 2 
 3 import jdk.incubator.code.TypeElement;
 4 
 5 /**
 6  * A symbolic reference to a Java class member or a Java type including members,
 7  * commonly containing symbolic names together with {@link JavaType symbolic descriptions}
 8  * of Java types.
 9  * <p>
10  * A symbolic Java reference can be resolved to a corresponding instance of its
11  * reflected representation, much like the symbolic description of a Java type
12  * can be resolved to an instance of {@link java.lang.reflect.Type Type}.
13  */
14 public sealed interface JavaRef extends TypeElement
15         permits MethodRef, ConstructorRef, FieldRef, RecordTypeRef {
16     // @@@ Enhance TypeElement to traverse children
17     //     - Uniform tree traversal and transformation independent of
18     //       externalization.
19     // @@@ Make RecordTypeRef.ComponentRef implement JavaRef?
20     //     - resolve to RecordComponent
21     //     - (RecordTypeRef resolves to Type.)
22     // @@@ AnnotatedElement is the common top type for resolved Java refs and types
23 }