Why an "else" here if the assumption is that input is an `InputSupplier`? How about
```
else if (input instanceOf InputSupplier) {
...
} else {
  throw new ....
}
```
?