/** Initializes the non-standard library package along with its content. */
  public AcceleoNonStandardLibrary() {
    final ResourceSet resourceSet = new ResourceSetImpl();
    /*
     * Crude workaround : We try not to reload the std lib for no reason, but that means the OCL standard
     * lib used for our references must be the sole instance used by OCL. FIXME : For now, use internals
     * ... try and find a way to use it without restricted access.
     */
    resourceSet.getResources().add(OCLStandardLibraryImpl.INSTANCE.getString().eResource());

    try {
      if (nonStdLibPackage == null) {
        nonStdLibPackage = (EPackage) ModelUtils.load(URI.createURI(NS_URI), resourceSet);
        collectionType = (EClass) nonStdLibPackage.getEClassifier(TYPE_COLLECTION_NAME);
        eObjectType = (EClass) nonStdLibPackage.getEClassifier(TYPE_EOBJECT_NAME);
        oclAnyType = (EClass) nonStdLibPackage.getEClassifier(TYPE_OCLANY_NAME);
        orderedSetType = (EClass) nonStdLibPackage.getEClassifier(TYPE_ORDEREDSET_NAME);
        sequenceType = (EClass) nonStdLibPackage.getEClassifier(TYPE_SEQUENCE_NAME);
        stringType = (EClass) nonStdLibPackage.getEClassifier(PRIMITIVE_STRING_NAME);
      }
    } catch (IOException e) {
      AcceleoCommonPlugin.log(
          AcceleoCommonMessages.getString("AcceleoNonStandardLibrary.LoadFailure"),
          false); //$NON-NLS-1$
    }
  }