anchor.diff:      },
       "optional": [],
     };
  +
  +  RTCSignalingState get signalingState => _signalingState;
  +
  +  RTCIceGatheringState get iceGatheringState => _iceGatheringState;
  +
  +  RTCIceConnectionState get iceConnectionState => _iceConnectionState;
   
     RTCPeerConnection(this._jsPc) {
       _jsPc.onAddStream.listen((mediaStreamEvent) {
  
positive.code:  */
  class RTCPeerConnection {
    final HTML.RtcPeerConnection _jsPc;
  
    // public: delegate
    SignalingStateCallback onSignalingState;
  
negative.code:     });
      _jsPc.onSignalingStateChange.listen((_) {
        if (onSignalingState != null) {
          _signalingState = signalingStateForString(_jsPc.signalingState);
          onSignalingState(_signalingState);
        }
      });
      JS.JsObject.fromBrowserObject(_jsPc)['ontrack'] =
  