parameters: (parent_property, f)
return_statement: return True
docstring: Return true iff f is an ordinary subfeature of the parent_property's
          feature, or if f is a subfeature of the parent_property's feature
          specific to the parent_property's value.
docstring_summary: Return true iff f is an ordinary subfeature of the parent_property's
          feature, or if f is a subfeature of the parent_property's feature
          specific to the parent_property's value.
docstring_tokens: Return true iff f is an ordinary subfeature of the parent_property s feature or if f is a subfeature of the parent_property s feature specific to the parent_property s value .
function: def is_subfeature_of (parent_property, f):
      """ Return true iff f is an ordinary subfeature of the parent_property's
          feature, or if f is a subfeature of the parent_property's feature
          specific to the parent_property's value.
      """
      if not f.subfeature():
          return False
  
      p = f.parent()
      if not p:
          return False
  
      parent_feature = p[0]
      parent_value = p[1]
  
      if parent_feature != parent_property.feature():
          return False
  
      if parent_value and parent_value != parent_property.value():
          return False
  
      return True
function_tokens: def is_subfeature_of ( parent_property , f ) : if not f . subfeature ( ) : return False p = f . parent ( ) if not p : return False parent_feature = p [ 0 ] parent_value = p [ 1 ] if parent_feature != parent_property . feature ( ) : return False if parent_value and parent_value != parent_property . value ( ) : return False return True