/** @generated */
 protected boolean provides(CreateNodeViewOperation op) {
   if (op.getContainerView() == null) {
     return false;
   }
   IElementType elementType = getSemanticElementType(op.getSemanticAdapter());
   EObject domainElement = getSemanticElement(op.getSemanticAdapter());
   int visualID;
   if (op.getSemanticHint() == null) {
     // Semantic hint is not specified. Can be a result of call from CanonicalEditPolicy.
     // In this situation there should be NO elementType, visualID will be determined
     // by VisualIDRegistry.getNodeVisualID() for domainElement.
     if (elementType != null || domainElement == null) {
       return false;
     }
     visualID = GeometryVisualIDRegistry.getNodeVisualID(op.getContainerView(), domainElement);
   } else {
     visualID = GeometryVisualIDRegistry.getVisualID(op.getSemanticHint());
     if (elementType != null) {
       if (!GeometryElementTypes.isKnownElementType(elementType)
           || (!(elementType instanceof IHintedType))) {
         return false; // foreign element type
       }
       String elementTypeHint = ((IHintedType) elementType).getSemanticHint();
       if (!op.getSemanticHint().equals(elementTypeHint)) {
         return false; // if semantic hint is specified it should be the same as in element type
       }
       if (domainElement != null
           && visualID
               != GeometryVisualIDRegistry.getNodeVisualID(op.getContainerView(), domainElement)) {
         return false; // visual id for node EClass should match visual id from element type
       }
     } else {
       if (!GeometryEditPart.MODEL_ID.equals(
           GeometryVisualIDRegistry.getModelID(op.getContainerView()))) {
         return false; // foreign diagram
       }
       switch (visualID) {
         case PointEditPart.VISUAL_ID:
           if (domainElement == null
               || visualID
                   != GeometryVisualIDRegistry.getNodeVisualID(
                       op.getContainerView(), domainElement)) {
             return false; // visual id in semantic hint should match visual id for domain element
           }
           break;
         default:
           return false;
       }
     }
   }
   return PointEditPart.VISUAL_ID == visualID;
 }
 /** @generated */
 public Edge createEdge(
     IAdaptable semanticAdapter,
     View containerView,
     String semanticHint,
     int index,
     boolean persisted,
     PreferencesHint preferencesHint) {
   IElementType elementType = getSemanticElementType(semanticAdapter);
   String elementTypeHint = ((IHintedType) elementType).getSemanticHint();
   switch (GeometryVisualIDRegistry.getVisualID(elementTypeHint)) {
     case LineEditPart.VISUAL_ID:
       return createLine_4001(
           getSemanticElement(semanticAdapter), containerView, index, persisted, preferencesHint);
   }
   // can never happen, provided #provides(CreateEdgeViewOperation) is correct
   return null;
 }
 /** @generated */
 protected boolean provides(CreateEdgeViewOperation op) {
   IElementType elementType = getSemanticElementType(op.getSemanticAdapter());
   if (!GeometryElementTypes.isKnownElementType(elementType)
       || (!(elementType instanceof IHintedType))) {
     return false; // foreign element type
   }
   String elementTypeHint = ((IHintedType) elementType).getSemanticHint();
   if (elementTypeHint == null
       || (op.getSemanticHint() != null && !elementTypeHint.equals(op.getSemanticHint()))) {
     return false; // our hint is visual id and must be specified, and it should be the same as in
                   // element type
   }
   int visualID = GeometryVisualIDRegistry.getVisualID(elementTypeHint);
   EObject domainElement = getSemanticElement(op.getSemanticAdapter());
   if (domainElement != null
       && visualID != GeometryVisualIDRegistry.getLinkWithClassVisualID(domainElement)) {
     return false; // visual id for link EClass should match visual id from element type
   }
   return true;
 }
 /** @generated */
 public Node createNode(
     IAdaptable semanticAdapter,
     View containerView,
     String semanticHint,
     int index,
     boolean persisted,
     PreferencesHint preferencesHint) {
   final EObject domainElement = getSemanticElement(semanticAdapter);
   final int visualID;
   if (semanticHint == null) {
     visualID = GeometryVisualIDRegistry.getNodeVisualID(containerView, domainElement);
   } else {
     visualID = GeometryVisualIDRegistry.getVisualID(semanticHint);
   }
   switch (visualID) {
     case PointEditPart.VISUAL_ID:
       return createPoint_2001(domainElement, containerView, index, persisted, preferencesHint);
   }
   // can't happen, provided #provides(CreateNodeViewOperation) is correct
   return null;
 }