The whole point of those classes is so that you don't have to implement those methods inline, thus decreasing the size of your codebase overall by increasing reuse. Those BNet*Stream classes are extremely reusable; they're not bnet-specific, they're really just packet buffers. The BNCSPacket* classes are specifically built for BNCS, but can be easily modified for other binary protocols.
If you're referring to the BNCSConnection class, that's a complete implementation of BNCS, which necessitates hugeness. You will not need to use anything from there; I only provided it for reference as to how I use the other four classes. Reading and writing packets is extremely simple once you've built the boilerplate code; here's an excerpt from BNCSConnection:
p = new BNCSPacket(BNCSPacketId.SID_AUTH_INFO);
p.writeDWord(0); // Protocol ID (0)
p.writeDWord(PlatformIDs.PLATFORM_IX86); // Platform ID (IX86)
p.writeDWord(productID.getDword()); // Product ID
p.writeDWord(verByte); // Version byte
p.writeDWord(prodLang); // Product language
p.writeDWord(0); // Local IP
p.writeDWord(tzBias); // TZ bias
p.writeDWord(0x409); // Locale ID
p.writeDWord(0x409); // Language ID
p.writeNTString(loc.getISO3Country()); // Country abreviation
p.writeNTString(loc.getDisplayCountry()); // Country
p.SendPacket(bncsOutputStream);
Another example, this one reads SID_PING and replies with the same DWORD:
case SID_PING: {
BNCSPacket p = new BNCSPacket(BNCSPacketId.SID_PING);
p.writeDWord(is.readDWord());
p.SendPacket(bncsOutputStream);
break;
}