protected internal virtual Library loadLibrary([In] string obj0)
      {
        if (obj0 == null)
          return (Library) null;
        Class @class;
        try
        {
          @class = ObjectUtilities.getClassLoader(Object.instancehelper_getClass((object) this)).loadClass(obj0);
          Library library;
          try
          {
            library = (Library) @class.getMethod("getInstance", (Class[]) null, BasicProjectInfo.OptionalLibraryHolder.__\u003CGetCallerID\u003E()).invoke((object) null, (object[]) null, BasicProjectInfo.OptionalLibraryHolder.__\u003CGetCallerID\u003E());
          }
          catch (Exception ex)
          {
            int num = 2;
            if (ByteCodeHelper.MapException<Exception>(ex, (ByteCodeHelper.MapFlags) num) == null)
              throw;
            else
              goto label_9;
          }
          return library;
        }
        catch (Exception ex)
        {
          int num = 2;
          if (ByteCodeHelper.MapException<Exception>(ex, (ByteCodeHelper.MapFlags) num) == null)
            throw;
          else
            goto label_10;
        }
label_9:
        Library library1;
        try
        {
          library1 = (Library) @class.newInstance(BasicProjectInfo.OptionalLibraryHolder.__\u003CGetCallerID\u003E());
        }
        catch (Exception ex)
        {
          int num = 2;
          if (ByteCodeHelper.MapException<Exception>(ex, (ByteCodeHelper.MapFlags) num) == null)
            throw;
          else
            goto label_15;
        }
        return library1;
label_15:
        // ISSUE: variable of the null type
        __Null local = null;
        goto label_16;
label_10:
        local = null;
label_16:
        return (Library) null;
      }
 public virtual Library getLibrary()
 {
   if (this.library == null)
     this.library = this.loadLibrary(this.libraryClass);
   return this.library;
 }
 public virtual void addOptionalLibrary(Library library)
 {
   if (library == null)
   {
     string str = "Library must be given.";
     Throwable.__\u003CsuppressFillInStackTrace\u003E();
     throw new NullPointerException(str);
   }
   else
     this.optionalLibraries.add((object) new BasicProjectInfo.OptionalLibraryHolder(library));
 }
 public OptionalLibraryHolder([In] Library obj0)
 {
   base.\u002Ector();
   BasicProjectInfo.OptionalLibraryHolder optionalLibraryHolder = this;
   if (obj0 == null)
   {
     string str = "Library must not be null.";
     Throwable.__\u003CsuppressFillInStackTrace\u003E();
     throw new NullPointerException(str);
   }
   else
   {
     this.library = obj0;
     this.libraryClass = Object.instancehelper_getClass((object) obj0).getName();
   }
 }
 public virtual void addLibrary(Library library)
 {
   if (library == null)
   {
     Throwable.__\u003CsuppressFillInStackTrace\u003E();
     throw new NullPointerException();
   }
   else
     this.libraries.add((object) library);
 }