title: How do dependency/attached properties work internally and where are values stored?
body: <p>I'm a little bit unclear with all this magic. 
  As I understood dependency properties get inherited from the DependencyObject, so values are stored:</p>
  
  <ul>
  <li>in the instance itself if value is assigned (in the local dictionary) </li>
  <li><p>or taken from the link to a parent element if value is not specified. </p>
  
  <pre><code>protected object GetValue(string propertyName)
  {
     if (LocalValues.ContainsKey(propertyName))
     {
        return LocalValues[propertyName];
     }
     return Parent.GetValue(propertyName);
  }
  </code></pre>
  
  <p>Am I correct in this?</p></li>
  </ul>
  
  <p>I also don't understand where are values for attached properties stored?</p>
  
  <pre><code>Control.FontSizeProperty = TextElement.FontSizeProperty.AddOwner(
  typeof(Control), new FrameworkPropertyMetadata(SystemFonts.MessageFontSize,
  FrameworkPropertyMetadataOptions.Inherits));
  </code></pre>
  
  <p>Does AddOwner method call on Attached property assigns value to the instance field? When does this happen and where does the value go?</p>
  
  <p>Thanks!</p>