<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def is_protected(self):
 """ 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) """


        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