diff -r 1b1bca603244 -r de411d537aae src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java --- a/src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java Tue Aug 28 09:01:54 2018 +0200 +++ b/src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java Wed Aug 29 09:36:17 2018 +0200 @@ -28,7 +28,7 @@ import java.util.List; /** - * A tree node for a {@code case} in a {@code switch} statement. + * A tree node for a {@code case} in a {@code switch} statement or expression. * * For example: *
@@ -49,13 +49,89 @@
     /**
      * Returns the expression for the case, or
      * {@code null} if this is the default case.
+     * If this case has multiple lables, returns the first label.
      * @return the expression for the case, or null
      */
     ExpressionTree getExpression();
 
     /**
-     * Returns the statements labeled by the case.
-     * @return the statements labeled by the case
+     * Returns the labels for this case.
+     * For default case, returns an empty list.
+     *
+     * @return labels for this case
+     * @since 12
+     *
+     * @deprecated This method is modeling a case with multiple labels,
+     * which is part of a preview feature and may be removed
+     * if the preview feature is removed.
+     */
+    @Deprecated(forRemoval=true, since="12")
+    List getExpressions();
+
+    /**
+     * For case with kind {@linkplain CaseKind#STATEMENT},
+     * returns the statements labeled by the case.
+     * Returns {@code null} for case with kind
+     * {@linkplain CaseKind#RULE}.
+     * @return the statements labeled by the case or null
      */
     List getStatements();
+
+    /**
+     * For case with kind {@linkplain CaseKind#RULE},
+     * returns the statement or expression after the arrow.
+     * Returns {@code null} for case with kind
+     * {@linkplain CaseKind#STATEMENT}.
+     *
+     * @return case value or null
+     * @since 12
+     *
+     * @deprecated This method is modeling a rule case,
+     * which is part of a preview feature and may be removed
+     * if the preview feature is removed.
+     */
+    @Deprecated(forRemoval=true, since="12")
+    public default Tree getBody() {
+        return null;
+    }
+
+    /**
+     * Returns the kind of this case.
+     *
+     * @return the kind of this case
+     * @since 12
+     *
+     * @deprecated This method is used to model a rule case,
+     * which is part of a preview feature and may be removed
+     * if the preview feature is removed.
+     */
+    @Deprecated(forRemoval=true, since="12")
+    public default CaseKind getCaseKind() {
+        return CaseKind.STATEMENT;
+    }
+
+    /**
+     * The syntatic form of this case:
+     * 
+     *
+     * @since 12
+     *
+     * @deprecated This enum is used to model a rule case,
+     * which is part of a preview feature and may be removed
+     * if the preview feature is removed.
+     */
+    @Deprecated(forRemoval=true, since="12")
+    public enum CaseKind {
+        /**
+         * Case is in the form: {@code case : }.
+         */
+        STATEMENT,
+        /**
+         * Case is in the form: {@code case  -> }.
+         */
+        RULE;
+    }
 }