code: def is_dependent(variable, source, context, only_unprotected=False):
      '''
      Args:
          variable (Variable)
          source (Variable)
          context (Contract|Function)
          only_unprotected (bool): True only unprotected function are considered
      Returns:
          bool
      '''
      assert isinstance(context, (Contract, Function))
      if isinstance(variable, Constant):
          return False
      if variable == source:
          return True
      context = context.context
  
      if only_unprotected:
          return variable in context[KEY_NON_SSA_UNPROTECTED] and source in context[KEY_NON_SSA_UNPROTECTED][variable]
      return variable in context[KEY_NON_SSA] and source in context[KEY_NON_SSA][variablef is_dependent(variable, source, context, only_unprotected=False):
      '''
      Args:
          variable (Variable)
          source (Variable)
          context (Contract|Function)
          only_unprotected (bool): True only unprotected function are considered
      Returns:
          bool
      '''
      assert isinstance(context, (Contract, Function))
      if isinstance(variable, Constant):
          return False
      if variable == source:
          return True
      context = context.context
  
      if only_unprotected:
          return variable in context[KEY_NON_SSA_UNPROTECTED] and source in context[KEY_NON_SSA_UNPROTECTED][variable]
      return variable in context[KEY_NON_SSA] and source in context[KEY_NON_SSA][variable]
docs: Args:
          variable (Variable)
          source (Variable)
          context (Contract|Function)
          only_unprotected (bool): True only unprotected function are considered
      Returns:
          bool