anchor.diff:    /// Use `createSyntheticKeyboardEvent` instead.
     external factory SyntheticKeyboardEvent._();
   
  +  /// Returns `true` if the `Alt` (`Option` or `⌥` on OS X) key was active when the key event was generated.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/altKey>
     external bool get altKey;
  +
  +  /// Returns a [String] representing the character value of the key.
  +  ///
  +  /// If the key corresponds to a printable character, this value is a non-empty Unicode string containing that character.
  +  /// If the key doesn't have a printable representation, this is an empty string.
     external String get char;
  +
  +  /// Returns `true` if the `Ctrl` key was active when the key event was generated.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/ctrlKey>
     external bool get ctrlKey;
  +
  +  /// Returns a [String] representing a locale string indicating the locale the keyboard is configured for.
  +  ///
  +  /// This may be the empty string if the browser or device doesn't know the keyboard's locale.
     external String get locale;
  +
  +  /// Returns a [num] representing the location of the key on the keyboard or other input device.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/location>
     external num get location;
  +
  +  /// Returns a [String] representing the key value of the key represented by the event.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key>
     external String get key;
  +
  +  /// Returns `true` if the `Meta` key (on Mac keyboards, the `⌘ Command key`; on Windows keyboards, the Windows key (`⊞`))
  +  /// was active when the key event was generated.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/metaKey>
     external bool get metaKey;
  +
  +  /// Returns `true` if the key is being held down such that it is automatically repeating.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat>
     external bool get repeat;
  +
  +  /// Returns `true` if the `Shift` key was active when the key event was generated.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/shiftKey>
     external bool get shiftKey;
  +
  +  /// Returns a [num] representing a system and implementation dependent numerical code identifying the unmodified
  +  /// value of the pressed key.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode>
     external num get keyCode;
  +
  +  /// Returns a [num] representing the Unicode reference number of the key; this attribute is used only by the `keypress` event.
  +  ///
  +  /// For keys whose `char` attribute contains multiple characters, this is the Unicode value of the first character in
  +  /// that attribute. In Firefox 26 this returns codes for printable characters.
  +  ///
  +  /// See <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/charCode>
     external num get charCode;
   }
   
  +/// A [SyntheticEvent] wrapper that is specifically backed by a [CompositionEvent].
  +///
  +/// See <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent>
   @JS()
   class SyntheticCompositionEvent extends SyntheticEvent {
     /// [SyntheticCompositionEvent]s cannot be manually instantiated.
  
positive.code:   /// Use `createSyntheticCompositionEvent` instead.
    external factory SyntheticCompositionEvent._();
  
    external String get data;
  }
  
  @JS()
  class SyntheticFocusEvent extends SyntheticEvent {
    /// [SyntheticFocusEvent]s cannot be manually instantiated.
  
negative.code:   external List<String> get types;
  }
  
  /// A [SyntheticEvent] wrapper that is specifically backed by a [MouseEvent].
  ///
  /// See <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent>
  @JS()
  class SyntheticMouseEvent extends SyntheticEvent {
    /// [SyntheticMouseEvent]s cannot be manually instantiated.
  