update: I dug into this. this is the culprint in _ElementAttributeMap:

```dart
  void operator []=(String key, value) {
    _element.$dom_setAttribute(key, '$value');
  }
```

I filed https://code.google.com/p/dart/issues/detail?id=8191 because I'm not sure about this :)

I was surprised that LinkedHashMap can't be extended. This seems like a bug to me. WDYT?

if you don't mind, a TODO I've been meaning to add:

// TODO(jmesserly): this should be <String, String> and we should put namespaced
// attributes into getNamespacedAttributes.

Basically dart:html now has a clean separation between namespaced and non-namespaced attributes, I would like to use that instead of my AttributeName hack