EStructuralFeature asStringFeature = object.eClass().getEStructuralFeature(eStructuralFeature.getName() + "AsString");
if (asStringFeature != null) {
object.eSet(asStringFeature, "" + x);
object.eSet(eStructuralFeature, x);
} else if (eStructuralFeature instanceof EReference) {
if (eStructuralFeature.getName().equals("GlobalId")) {
IfcGloballyUniqueId globallyUniqueId = Ifc2x3tc1Factory.eINSTANCE.createIfcGloballyUniqueId();
globallyUniqueId.setWrappedValue(jsonReader.nextString());
object.eSet(eStructuralFeature, globallyUniqueId);
} else if (embedded) {
jsonReader.beginObject();
object.eSet(eStructuralFeature, wrappedObject);
} else {
if (jsonReader.nextName().equals("_v")) {
EStructuralFeature wv = wrappedObject.eClass().getEStructuralFeature("wrappedValue");
wrappedObject.eSet(wv, readPrimitive(jsonReader, wv));
object.eSet(eStructuralFeature, wrappedObject);
object.eSet(eStructuralFeature, model.getNoFetch(refOid));
} else {
IdEObject refObject = (IdEObject) model.create(model.getPackageMetaData().getEClassIncludingDependencies(refType), refOid);
((IdEObjectImpl)refObject).setLoadingState(State.OPPOSITE_SETTING);
model.add(refObject.getOid(), refObject);
object.eSet(eStructuralFeature, refObject);
((IdEObjectImpl)refObject).setLoadingState(State.TO_BE_LOADED);