checkType functions could use a better name. Maybe:
```
checkType0 --> findSubtype
checkType1 --> findConforming
checkType  --> findConformingOrFirst
```