Proposed solutions
Final Solution
The final solution brought the most possible flexibility to the labels. The complete information needed for the specific label is now in the storage label type class. The label is defined having the declared storage label type and the value of same type. For example, a StringStorageLabel can have only storage type as a class that extends AbstractStorageLabelType<Boolean>.