public Omni<T> setAll(Object sourceObj){
		// if this object is null or the sourceObj is null, then, do nothing and return this.
		if (classInfo == null || sourceObj == null){
			return this;
		}

		Omni jSource = (sourceObj instanceof Omni)?(Omni)sourceObj:mapper.omni(sourceObj);
		Class targetClass = classInfo.getObjectClass();

		// determining prop name
		Set<String> propNames;
		// if the target is a Map, then, all the source properties need to be set
		if (Map.class.isAssignableFrom(targetClass)){
			propNames = jSource.keySet();
		}
		// otherwise, if the target is an object, propNames is the intersection of target and source
		else{
			// make sure to copy
			propNames = new HashSet<>(keySet());
			propNames.retainAll(jSource.keySet());
		}

		for (String propName : propNames) {
			Object value = jSource.get(propName);
			set(propName,value);
		}
		return this;
	}