Defines the mode of a {@link Connection}.
A connection is defined as going from a {@link Vertex} to an {@link Edge}.
The left hand side (the Vertex side) can either be restricted, ie. allowing only one Vertex to connect to an Edge with a {@link Connector}having a {@link LeftRestrictedConnectionMode}, or it can be unrestricted, ie. allowing an unlimited number of Vertices to connect to an Edge with a Connector having a {@link LeftUnrestrictedConnectionMode}.
The right hand side (the Edge side) can also either be restricted, ie. allowing a Vertex to only connect to one edge with a particular {@EdgeType} on a Connector having a {@link RightRestrictedConnectionMode}. The right hand side can be unrestricted too, ie. allowing a Vertex to connect to any number of EdgeTypes on a Connectior having a {@link RightRestrictedConnectionMode}.
The four restrictions lead to four basic ConnectionModes:
- {@link UnrestrictedConnectionMode}: having both a RightUnrestrictedConnectionMode and a LeftUnrestrictedConnectionMode
- {@link InjectiveConnectionMode}: having a RightUnrestrictedConnectionMode and a LeftRestrictedConnectionMode
- {@link SurjectiveConnectionMode}: having a RightRestrictedConnectionMode and a LeftUnrestrictedConnectionMode
- {@link BijectiveConnectionMode}: having a RightRestrictedConnectionMode and a LeftRestrictedConnectionMode
A {@link ConnectorType} can only be created with one of these four ConnectionModes.