{
    if (eCrossReferences == null)
    {
      EStructuralFeature [] eStructuralFeatures = 
        ((EClassImpl.FeatureSubsetSupplier)eClass().getEAllStructuralFeatures()).crossReferences();

      eCrossReferences =
        eStructuralFeatures == null ?
          ECrossReferenceEList.<EObject>emptyCrossReferenceEList() :
          new ECrossReferenceEList<EObject>(this, eStructuralFeatures)
          {
            @Override
            protected boolean useIsSet()
            {
              return false;
            }

            @Override
            protected ListIterator<EObject> newResolvingListIterator()
            {
              return 
                new ResolvingFeatureIteratorImpl<EObject>(eObject, eStructuralFeatures)
                {
                  @Override
                  protected boolean useIsSet()
                  {
                    return false;
                  }
                };
            }

            @Override
            protected ListIterator<EObject> newNonResolvingListIterator()
            {
              return 
                new FeatureIteratorImpl<EObject>(eObject, eStructuralFeatures)
                {
                  @Override
                  protected boolean useIsSet()
                  {
                    return false;
                  }
                };
            }
          };
    }
    return eCrossReferences;
  }