docs: def detect_possible_scope_visibility(node, context_scope):  # type: (Dict[str, Any], Scope) -> ScopeVisibilityHint
      """ Returns a *possible* variable visibility by the specified node.
      The "possible" means that we can not determine a scope visibility of lambda arguments until reachability check.
      """
      node_type = NodeType(node['type'])
  
      if not is_analyzable_identifier(node):
          return ScopeVisibilityHint(
              ScopeVisibility.UNANALYZABLE,
              ExplicityOfScopeVisibility.UNANALYZABLE
          )
  
      if node_type is NodeType.IDENTIFIER:
          return _detect_possible_identifier_scope_visibility(node, context_scope)
  
      if node_type in GlobalLikeScopeVisibilityNodeTypes:
          return ScopeVisibilityHint(
              ScopeVisibility.GLOBAL_LIKE,
              ExplicityOfScopeVisibility.IMPLICIT_BUT_CONSTRAINED
          )
  
      return ScopeVisibilityHint(
          ScopeVisibility.UNANALYZABLE,
          ExplicityOfScopeVisibility.UNANALYZABLE
      )