@associations can never have an array, so remove the dead code
decouple JoinAssociation from JoinDependency
hide join_parts internals from other classes