+// @Override
+// public void perform(AsyncReadGraph graph, final AsyncProcedure<Resource> procedure) {
+//
+// final Layer0 l0 = graph.getService(Layer0.class);
+//
+// graph.forIsInstanceOf(resource, resource2, new AsyncProcedure<Boolean>() {
+//
+// @Override
+// public void execute(AsyncReadGraph graph, Boolean isInstance) {
+// if(isInstance) {
+// procedure.execute(graph, resource);
+// } else {
+//
+// graph.forPossibleObject(resource, l0.PartOf, new AsyncProcedure<Resource>() {
+//
+// @Override
+// public void execute(AsyncReadGraph graph, final Resource parent) {
+//
+// if(parent == null) {
+// procedure.execute(graph, null);
+// } else {
+// graph.asyncRequest(new PossibleTypedParent(parent, resource2), procedure);
+// }
+//
+// }
+//
+// @Override
+// public void exception(AsyncReadGraph graph, Throwable throwable) {
+// procedure.exception(graph, throwable);
+// }
+//
+// });
+//
+// }
+// }
+//
+// @Override
+// public void exception(AsyncReadGraph graph, Throwable throwable) {
+// procedure.exception(graph, throwable);
+// }
+// });
+//
+//
+// }
+