code: @Override
    public IRTerminalStatement getLeastSignificantTerminalStatement()
    {
      if( _defaultStatements.isEmpty())
      {
        return null;
      }
      IRContinueStatement caseStmtContinue = null;
      if( _cases != null )
      {
        outer:
        for( int i = 0; i < _cases.size(); i++ )
        {
          List caseStatements = _cases.get(i).getStatements();
          if( caseStatements != null && caseStatements.size() > 0 )
          {
            for( int iStmt = 0; iStmt < caseStatements.size(); iStmt++ )
            {
              IRStatement statement = (IRStatement) caseStatements.get(iStmt);
              // Note that the statement can be null if it's just a semicolon
              IRTerminalStatement terminalStmt = (statement == null ? null : statement.getLeastSignificantTerminalStatement());
              if( terminalStmt != null && !(terminalStmt instanceof IRBreakStatement) )
              {
                if( terminalStmt instanceof IRContinueStatement )
                {
                  caseStmtContinue = (IRContinueStatement)terminalStmt;
                }
                continue outer;
              }
            }
            return null;
          }
        }
      }
      for( int i = 0; i < _defaultStatements.size(); i++ )
      {
        IRTerminalStatement terminalStmt = _defaultStatements.get( i ).getLeastSignificantTerminalStatement();
        if( terminalStmt != null && !(terminalStmt instanceof IRBreakStatement) )
        {
          return caseStmtContinue != null ? caseStmtContinue : terminalStmt;
        }
      }
      return null;
    }
docs: The switch statement has a non-null terminal stmt iff:
  1) There are no case stmts or all the the case stmts have non-break terminator and
  2) The default stmt exists and has a non-break terminator