public class DemoOutcome {
    sealed interface Outcome permits Confirmed, Rejected {
    }

    record Confirmed(String code) implements Outcome {
    }

    record Rejected(String reason) implements Outcome {
    }

    static String describe(Outcome outcome) {
        return switch (outcome) {
            case Confirmed confirmed -> "loan " + confirmed.code();
            case Rejected rejected -> "rejected: " + rejected.reason();
        };
    }

    public static void main(String[] args) {
        System.out.println(describe(new Confirmed("B-17")));
        System.out.println(describe(new Rejected("unavailable")));
    }
}
