private boolean tryReduceSwitchWithConstantInput(JSwitchStatement s, Context ctx) {
if (!(s.getExpr() instanceof JValueLiteral)) {
// the input is not a constant
return false;
}
JValueLiteral targetValue = (JValueLiteral) s.getExpr();
// Find the matching case
JCaseStatement matchingCase = null;
for (JStatement subStatement : s.getBody().getStatements()) {
if (subStatement instanceof JCaseStatement) {
JCaseStatement caseStatement = (JCaseStatement) subStatement;
if (caseStatement.getExpr() == null) {
// speculatively put the default case into the matching case
matchingCase = caseStatement;
} else if (caseStatement.getExpr() instanceof JValueLiteral) {
JValueLiteral caseValue = (JValueLiteral) caseStatement.getExpr();
if (caseValue.getValueObj().equals(targetValue.getValueObj())) {
matchingCase = caseStatement;
break;
}
}
}