Question: I'd like to find all the radio buttons on a form and leave the other input types alone. My code looks like this:

```dart
form.queryAll("select, input").forEach((Element el) {
  if (el is RadioButtonInputElement) {
     print ('got radio button');
  } else {
     print ('got some other input type');
  }
}

```

This results in all input types other than `select` being identified as radio buttons. In fact, if I look at `el` in the `then` branch ("got radio button"), it is always reported as `InputElement`.

Answer: 
Quite understandably, you seem to be presuming that `RadioButtonInputElement` is a subclass of `InputElement`. Things actually work more or less the other way around: [InputElement](http://api.dartlang.org/docs/releases/latest/dart_html/InputElement.html) implements [RadioButtonInputElement](http://api.dartlang.org/docs/releases/latest/dart_html/RadioButtonInputElement.html). This actually makes sense when you remember that the `input` element, in all its various forms, remains an `input` element, and it is its `type` attribute that differentiates its appearance and behavior.

As you discovered, all `input` elements therefore match (with the `is` operator) all of the interfaces that `InputElement` implements: an `input` with `type="radio"` will match `ButtonInputElement` just as an `input` with `type="button"` will match `RadioButtonInputElement`. They're both `InputElements` and satisfy both interfaces.

As you also discovered (in your answer), the solution is to test the `type` field of your `InputElement`:

```dart
if (el.type == 'radio') {
  print('got radio button');
}

```

I felt that explanation was warranted, so I'm adding this answer despite your already finding the solution.
I ended up changing the test:

```dart
if ( el.type == 'radio' ) {
  print ('got radio button');
}

```