* @param concept
   * @param module
   * @param environment
   * @return LogicObject
   */
  public static LogicObject createObject(String name, LogicObject concept, Module module, Environment environment) {
    { Module mdl000 = module;
      Context cxt000 = mdl000;

      if (mdl000 == null) {
        mdl000 = ((Module)(Stella.$MODULE$.get()));
        cxt000 = ((Context)(Stella.$CONTEXT$.get()));
      }
      { Object old$Module$000 = Stella.$MODULE$.get();
        Object old$Context$000 = Stella.$CONTEXT$.get();

        try {
          Native.setSpecial(Stella.$MODULE$, mdl000);
          Native.setSpecial(Stella.$CONTEXT$, cxt000);
          environment = environment;
          synchronized (Logic.$POWERLOOM_LOCK$) {
            { LogicObject renamed_Object = null;
              Symbol nameSymbol = null;
              Surrogate objectSurrogate = null;

              if (name != null) {
                nameSymbol = ((Symbol)(Stella.internStellaName(name)));
              }
              else if (concept != null) {
                nameSymbol = Symbol.internSymbol(PLI.getShortName(concept));
                nameSymbol = Symbol.internSymbolInModule(PLI.generateUniqueName(nameSymbol.symbolName, ((Module)(nameSymbol.homeContext)), null), ((Module)(nameSymbol.homeContext)), true);
              }
              else {
                nameSymbol = Symbol.internSymbolInModule(PLI.generateUniqueName("I", null, null), ((Module)(Stella.$MODULE$.get())), true);
              }
              objectSurrogate = Surrogate.lookupSurrogateInModule(nameSymbol.symbolName, ((Module)(nameSymbol.homeContext)), false);
              if (objectSurrogate == null) {
                objectSurrogate = Surrogate.internSurrogateInModule(nameSymbol.symbolName, ((Module)(nameSymbol.homeContext)), false);
              }
              renamed_Object = ((LogicObject)(Logic.helpCreateLogicInstance(objectSurrogate, null)));
              if (concept != null) {
                if (PLI.assertUnaryProposition(concept, renamed_Object, module, environment) != null) {
                  return (renamed_Object);
                }
                else {
                  return (null);
                }
              }
              return (renamed_Object);
            }
          }

        } finally {
          Stella.$CONTEXT$.set(old$Context$000);
          Stella.$MODULE$.set(old$Module$000);
        }
      }
    }
  }