@SuppressWarnings("unchecked")
 @Override
 public <O> GraphicalRepresentation<O> retrieveGraphicalRepresentation(O aDrawable) {
   if (aDrawable instanceof PatternRole) {
     PatternRole patternRole = (PatternRole) aDrawable;
     if (patternRole instanceof ShapePatternRole) {
       EditionPatternPreviewShapeGR returned = shapesGR.get(patternRole);
       if (returned == null || returned.isDeleted()) {
         returned = buildGraphicalRepresentationForShape((ShapePatternRole) patternRole);
         shapesGR.put(patternRole, returned);
         return (GraphicalRepresentation<O>) returned;
       }
       return (GraphicalRepresentation<O>) returned;
     } else if (patternRole instanceof ConnectorPatternRole) {
       EditionPatternPreviewConnectorGR returned = connectorsGR.get(patternRole);
       if (returned == null || returned.isDeleted()) {
         returned = buildGraphicalRepresentationForConnector((ConnectorPatternRole) patternRole);
         connectorsGR.put(patternRole, returned);
         return (GraphicalRepresentation<O>) returned;
       }
       return (GraphicalRepresentation<O>) returned;
     }
   } else if (aDrawable instanceof ConnectorFromArtifact) {
     ConnectorFromArtifact connector = (ConnectorFromArtifact) aDrawable;
     return (GraphicalRepresentation<O>) connector.getGraphicalRepresentation();
   } else if (aDrawable instanceof ConnectorToArtifact) {
     ConnectorToArtifact connector = (ConnectorToArtifact) aDrawable;
     return (GraphicalRepresentation<O>) connector.getGraphicalRepresentation();
   }
   logger.warning("Cannot build GraphicalRepresentation for " + aDrawable);
   return null;
 }
 private EditionPatternPreviewShapeGR buildGraphicalRepresentationForShape(
     ShapePatternRole patternRole) {
   // System.out.println("Build new EditionPatternPreviewShapeGR for shape " +
   // patternRole.getPatternRoleName());
   patternRole.addObserver(this);
   if (patternRole.getGraphicalRepresentation() instanceof ShapeGraphicalRepresentation) {
     EditionPatternPreviewShapeGR graphicalRepresentation =
         new EditionPatternPreviewShapeGR(patternRole, this);
     ((ShapeGraphicalRepresentation<?>) patternRole.getGraphicalRepresentation())
         .setValidated(false);
     graphicalRepresentation.setsWith(
         (GraphicalRepresentation<?>) patternRole.getGraphicalRepresentation(),
         GraphicalRepresentation.Parameters.text);
     patternRole._setGraphicalRepresentationNoNotification(graphicalRepresentation);
     return graphicalRepresentation;
   }
   EditionPatternPreviewShapeGR graphicalRepresentation =
       new EditionPatternPreviewShapeGR(patternRole, this);
   patternRole._setGraphicalRepresentationNoNotification(graphicalRepresentation);
   return graphicalRepresentation;
 }