fix: replace null with Optional
define BTreeNode and its internal keys
fix: EntrySet's key and value cannot be null