private ABlockStmIR consUnionTypedTuplePatternCheck(
boolean declarePatternVar, AUnionTypeIR unionType,
PatternBlockData patternData, SExpIR actualValue,
ATuplePatternIR tuplePattern)
{
ATupleTypeIR resTupleType = transAssistant.getInfo().getPatternAssistant().getTupleType(unionType, tuplePattern);
ABlockStmIR tuplePatternCheck = consTuplePatternCheck(declarePatternVar, tuplePattern, resTupleType, patternData, actualValue, true);
AIsOfClassExpIR instanceCheck = new AIsOfClassExpIR();
instanceCheck.setType(new ABoolBasicTypeIR());
instanceCheck.setCheckedType(patternData.getRootPatternVar().getType().clone());
instanceCheck.setExp(patternData.getRootPatternVar().clone());
AIfStmIR typeCheck = new AIfStmIR();
typeCheck.setIfExp(instanceCheck);
typeCheck.setThenStm(tuplePatternCheck);
ABlockStmIR block = new ABlockStmIR();
block.getStatements().add(typeCheck);
return block;
}