package com.yoursway.utils.gemstones;
public class GemstoneImpl<G extends Gemstone<G>> implements Gemstone<G> {
private final Facelet<G>[] facelets;
@SuppressWarnings("unchecked")
public GemstoneImpl(GemstoneDefinition<G> definition) {
facelets = definition.create((G) this);
for (int i = 0; i < facelets.length; i++)
facelets[i].initializeFacelet();
}
@SuppressWarnings("unchecked")
public final <F extends Facelet<G>> F get(Slot<F> slot) {
return (F) facelets[((SlotImpl<F, G>) slot).index()];
}
}