The ACL stuff in DataTree.java reimplements a kind of reference system. The idea may have been to save memory for equal ACL lists. However there's no code that ever removes an ACL list that is not used anymore.
- The ACL stuff could be in a separate class so that DataTree.java is not such a big beast anymore.
- It's risky to have mutable objects (list) as keys in a HashMap.
An idea to solve this: Have ACL lists as members of the datatree nodes. Lookup already existing ACL lists in a java.util.WeakHashMap.