Why do we have a second copy of the prototypes that are available?  Shouldn't we just be asking the context for this information:

```cpp
return (ctx_.prototypes_.find(proto_name) != ctx_.prototypes_.end());
```