public bool validate_UniqueID(EObject eObject, DiagnosticChain diagnostics, Dictionary <object, object> context)
        {
            bool   result = true;
            String id     = EcoreUtil.getID(eObject);

            if (id != null)
            {
                Resource resource = eObject.eResource();
                if (resource != null)
                {
                    EObject otherEObject = resource.getEObject(id);
                    if (eObject != otherEObject && otherEObject != null)
                    {
                        result = false;
                        if (diagnostics != null)
                        {
                            diagnostics.add
                                (createDiagnostic
                                    (BasicDiagnostic.ERROR,
                                    DIAGNOSTIC_SOURCE,
                                    EOBJECT__UNIQUE_ID,
                                    "_UI_DuplicateID_diagnostic",
                                    new Object[]
                            {
                                id,
                                getObjectLabel(eObject, context),
                                getObjectLabel(otherEObject, context)
                            },
                                    new Object[] { eObject, otherEObject, id },
                                    context));
                        }
                    }
                }
            }
            return(result);
        }
        public bool validate_EveryReferenceIsContained(EObject eObject, DiagnosticChain diagnostics, Dictionary <object, object> context)
        {
            bool result = true;

            if (eObject.eResource() != null)
            {
                foreach (EReference reference in eObject.eClass().eAllReferences)
                {
                    if (eObject.eIsSet(reference))
                    {
                        EObject eCrossReferenceObject = eObject.eGet(reference) as EObject;

                        if (eCrossReferenceObject.eResource() == null && !eCrossReferenceObject.eIsProxy() && !reference.transient)
                        {
                            result = false;
                            if (diagnostics != null)
                            {
                                diagnostics.add
                                    (createDiagnostic
                                        (BasicDiagnostic.ERROR,
                                        DIAGNOSTIC_SOURCE,
                                        EOBJECT__EVERY_REFERENCE_IS_CONTAINED,
                                        "_UI_DanglingReference_diagnostic",
                                        new Object[]
                                {
                                    getFeatureLabel(reference, context),
                                    getObjectLabel(eObject, context),
                                    getObjectLabel(eCrossReferenceObject, context)
                                },
                                        new Object[] { eObject, reference, eCrossReferenceObject },
                                        context));
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }

                /*
                 * for (EContentsEList.FeatureIterator<EObject> i = (EContentsEList.FeatureIterator<EObject>)eObject.eCrossReferences().iterator(); i.hasNext();)
                 * {
                 *  EObject eCrossReferenceObject = i.next();
                 *  if (eCrossReferenceObject.eResource() == null && !eCrossReferenceObject.eIsProxy() && !i.feature().isTransient())
                 *  {
                 *      result = false;
                 *      if (diagnostics != null)
                 *      {
                 *          diagnostics.add
                 *            (createDiagnostic
                 *              (BasicDiagnostic.ERROR,
                 *               DIAGNOSTIC_SOURCE,
                 *               EOBJECT__EVERY_REFERENCE_IS_CONTAINED,
                 *               "_UI_DanglingReference_diagnostic",
                 *               new Object[]
                 *               {
                 * getFeatureLabel(i.feature(), context),
                 * getObjectLabel(eObject, context),
                 * getObjectLabel(eCrossReferenceObject, context)
                 *               },
                 *               new Object[] { eObject, i.feature(), eCrossReferenceObject },
                 *               context));
                 *      }
                 *      else
                 *      {
                 *          break;
                 *      }
                 *  }
                 * }
                 */
            }
            return(result);
        }