IObject model = source.asIObject(this); target2model.put(source,model); return model;
IObject model = source.newIObject(); target2model.put( source, model ); source.fillIObject( model, this ); return model;
    public IObject map(ModelBased source){        if (source == null) {            return null;        } else if (target2model.containsKey(source)){            return (IObject) target2model.get(source);        } else {            IObject model = source.asIObject(this);            target2model.put(source,model);            return model;            }	}