code: def is_protected(self):
          
  
          if self.is_constructor:
              return True
          conditional_vars = self.all_conditional_solidity_variables_read(include_loop=False)
          args_vars = self.all_solidity_variables_used_as_args()
          return SolidityVariableComposed('msg.sender') in conditional_vars + args_vars
docs: Determine if the function is protected using a check on msg.sender
  
              Only detects if msg.sender is directly used in a condition
              For example, it wont work for:
                  address a = msg.sender
                  require(a == owner)
          Returns
              (bool)