def build_or_find_association(name, parent = @join_dependency.join_base, klass = nil)
found_association = @join_dependency.join_associations.detect do |assoc|
assoc.reflection.name == name &&
assoc.parent == parent &&
(!klass || assoc.reflection.klass == klass)
end
unless found_association
@join_dependency.send(:build, Polyamorous::Join.new(name, @join_type, klass), parent)
found_association = @join_dependency.join_associations.last
@relation = @relation.joins(found_association)
end
found_association
end