+ public static CaseEffectiveStatement copyCase(final CaseEffectiveStatement original,
+ final Immutable path, final int flags, final @Nullable CaseSchemaNode newOriginal) {
+ if (original instanceof DeclaredCaseEffectiveStatement) {
+ return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, path, flags,
+ newOriginal);
+ } else if (original instanceof UndeclaredCaseEffectiveStatement) {
+ return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, path, flags,
+ newOriginal);
+ } else {
+ throw new IllegalArgumentException("Unsupported origin " + original);
+ }
+ }
+
+ public static CaseEffectiveStatement createCase(final Immutable path,
+ final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+ final @Nullable CaseSchemaNode original) {
+ return new UndeclaredCaseEffectiveStatement(substatements, path, flags, original);
+ }
+
+ public static CaseEffectiveStatement createCase(final CaseStatement declared, final Immutable path,
+ final int flags, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+ final @Nullable CaseSchemaNode original) {
+ return new DeclaredCaseEffectiveStatement(declared, substatements, path, flags, original);
+ }
+