anchor.diff:      adapter.onRead.listen(_parser.append);
       _parser.onDigitalMessage.listen(_digitalPinStatesChanged);
       _parser.onAnaloglMessage.listen(_analogPinStatesChanged);
  +    _firmwareStream = _parser.onReportVersion.asBroadcastStream();
     }
   
     Future open() async {
       await adapter.open();
  -    _firmware = await _parser.onReportVersion.first;
  +    _firmware = await _firmwareStream.first;
       for (var i = 0; i < 16; i++) {
         await adapter.write([REPORT_DIGITAL | i, 1]);
         await adapter.write([REPORT_ANALOG | i, 1]);
  
positive.code:   Stream<PinState> digitalReadStream;
    /// Stream controller for analog read
    final _analogReadController = new StreamController<PinState>();
    Stream<PinState> _analogReadStream;
    final Map<int, int> _pins = {};
    final SysexParser _parser = new SysexParser();
  
negative.code: 
    Future reset() => adapter.write([SYSTEM_RESET]);
  
    Future<FirmataVersion> queryFirmware() async {
      await sendSysex(QUERY_FIRMWARE);
      return _firmwareStream.first;
    }
  
    //Future<bool> queryPinState(int pin) => sendSysex( PIN_STATE_QUERY, [pin]);
  
  