code: def inherit_flags(toolset, base, prohibited_properties = []):
      
      assert isinstance(toolset, basestring)
      assert isinstance(base, basestring)
      assert is_iterable_typed(prohibited_properties, basestring)
      for f in __module_flags.get(base, []):
  
          if not f.condition or b2.util.set.difference(f.condition, prohibited_properties):
              match = __re_first_group.match(f.rule)
              rule_ = None
              if match:
                  rule_ = match.group(1)
  
              new_rule_or_module = ''
  
              if rule_:
                  new_rule_or_module = toolset + '.' + rule_
              else:
                  new_rule_or_module = toolset
  
              __add_flag (new_rule_or_module, f.variable_name, f.condition, f.values)
docs: Brings all flag definitions from the 'base' toolset into the 'toolset'
      toolset. Flag definitions whose conditions make use of properties in
      'prohibited-properties' are ignored. Don't confuse property and feature, for
      example <debug-symbols>on and <debug-symbols>off, so blocking one of them does
      not block the other one.
  
      The flag conditions are not altered at all, so if a condition includes a name,
      or version of a base toolset, it won't ever match the inheriting toolset. When
      such flag settings must be inherited, define a rule in base toolset module and
      call it as needed.