+ if (domain instanceof VariantBinding && !(range instanceof VariantBinding))\r
+ {\r
+ // Make a recursive adaptation from a variant source\r
+ final VariantBinding domainBinding = (VariantBinding)domain;\r
+ final Binding rangeBinding = range;\r
+ AbstractAdapter result = new AbstractAdapter() {\r
+ @Override\r
+ public Object adapt(Object obj) throws AdaptException {\r
+ try {\r
+ Object value = domainBinding.getContent(obj);\r
+ Binding contentBinding = domainBinding.getContentBinding(obj);\r
+ AbstractAdapter adapter = (AbstractAdapter) getAdapter(contentBinding, rangeBinding, typeAdapter, mustClone);\r
+ return adapter.adapt(value);\r
+ } catch (BindingException | AdapterConstructionException e) {\r
+ throw new AdaptException(e);\r
+ }\r
+ }\r
+ };\r
+ result.clones = mustClone;\r
+ addToCache(req, result);\r
+ return result; \r
+ }\r
+ \r