It's fun implementing a BGP speaker from scratch. I implemented one about 15 years ago in Java which was designed much like this library. It was proprietary code which we used to advertise programmatically-determined routes to our edge routers. Connecting to a router, walking through the state machine changes, and debugging unexpected behavior (from both misunderstanding the RFC and from finding bugs in vendor implementations) was a great learning experience.