diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java
index fb39204..6e1f16f 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleResolver.java
@@ -1518,6 +1518,11 @@
 				throw new ResolutionTimeout();
 			}
 		}
+
+		@Override
+		public Collection<Wire> getSubstitutionWires(Wiring wiring) {
+			return ((ModuleWiring) wiring).getSubstitutionWires();
+		}
 	}
 
 	protected boolean threadResolving() {
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java
index dd8a8dd..ce85e50 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/container/ModuleWiring.java
@@ -14,7 +14,6 @@
 import java.util.*;
 import java.util.concurrent.Callable;
 import java.util.concurrent.atomic.AtomicReference;
-import org.apache.felix.resolver.FelixWiring;
 import org.eclipse.osgi.container.ModuleRevisionBuilder.GenericInfo;
 import org.eclipse.osgi.internal.container.AtomicLazyInitializer;
 import org.eclipse.osgi.internal.container.InternalUtils;
@@ -29,7 +28,7 @@
  * An implementation of {@link BundleWiring}.
  * @since 3.10
  */
-public final class ModuleWiring implements BundleWiring, FelixWiring {
+public final class ModuleWiring implements BundleWiring {
 	class LoaderInitializer implements Callable<ModuleLoader> {
 		@Override
 		public ModuleLoader call() throws Exception {
@@ -460,22 +459,7 @@
 		return revision.toString();
 	}
 
-	/**
-	 * Returns the subset of {@link Wiring#getRequiredResourceWires(String) require wires}
-	 * that provide wires to {@link Capability capabilities} which substitute capabilities
-	 * of this wiring. For example, when a {@link PackageNamespace package} name is both
-	 * provided and required by the same resource. If the package requirement is resolved
-	 * to a capability hosted by a different wiring then the package capability is
-	 * considered to be substituted.
-	 *
-	 * @see #getSubstitutedNames()
-	 * @return A collection containing a snapshot of the substitution {@link Wire}s
-	 * for the {@link Requirement requirements} of this wiring, or an empty list
-	 * if this wiring has no substitution wires.
-	 * @since 3.12
-	 */
-	@Override
-	public Collection<Wire> getSubstitutionWires() {
+	Collection<Wire> getSubstitutionWires() {
 		if (substitutedPkgNames.isEmpty()) {
 			return Collections.emptyList();
 		}
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java
index 502a7e4..9782d0a 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixResolveContext.java
@@ -18,7 +18,11 @@
  */package org.apache.felix.resolver;
 
 import java.util.Collection;
+
+import org.osgi.framework.namespace.PackageNamespace;
 import org.osgi.resource.Resource;
+import org.osgi.resource.Wire;
+import org.osgi.resource.Wiring;
 
 public interface FelixResolveContext
 {
@@ -41,4 +45,19 @@
      * resources. The returned collection may be unmodifiable.
      */
     public Collection<Resource> getOndemandResources(Resource host);
+
+    /**
+     * Returns the subset of {@link Wiring#getRequiredResourceWires(String) require wires}
+     * that provide wires to {@link Capability capabilities} which substitute capabilities
+     * of the given wiring. For example, when a {@link PackageNamespace package} name is both
+     * provided and required by the same resource. If the package requirement is resolved
+     * to a capability hosted by a different wiring then the package capability is
+     * considered to be substituted.
+     *
+     * @param wiring the wiring to get the substitution wires from
+     * @return A collection containing a snapshot of the substitution {@link Wire}s
+     * for the {@link Requirement requirements} of this wiring, or an empty list
+     * if this wiring has no substitution wires.
+     */
+    public Collection<Wire> getSubstitutionWires(Wiring wiring);
 }
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixWiring.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixWiring.java
deleted file mode 100644
index ce453b0..0000000
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/FelixWiring.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */package org.apache.felix.resolver;
-
-import java.util.Collection;
-import org.osgi.resource.Wire;
-
-public interface FelixWiring
-{
-    Collection<Wire> getSubstitutionWires();
-}
diff --git a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java
index 897b969..60beca8 100755
--- a/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java
+++ b/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java
@@ -1608,9 +1608,10 @@
         if (wiring != null)
         {
             Collection<Wire> substitutionWires;
-            if (wiring instanceof FelixWiring)
+            if (session.getContext() instanceof FelixResolveContext)
             {
-                substitutionWires = ((FelixWiring) wiring).getSubstitutionWires();
+                substitutionWires = ((FelixResolveContext) session.getContext()).getSubstitutionWires(
+                    wiring);
             }
             else
             {
