code: public static void getSuperTypeParameterMap(JvmDeclaredType type, Map<String, JvmTypeReference> mapping) {
  		for (final JvmTypeReference superTypeReference : type.getSuperTypes()) {
  			if (superTypeReference instanceof JvmParameterizedTypeReference) {
  				final JvmParameterizedTypeReference parameterizedTypeReference = (JvmParameterizedTypeReference) superTypeReference;
  				final JvmType st = superTypeReference.getType();
  				if (st instanceof JvmTypeParameterDeclarator) {
  					final JvmTypeParameterDeclarator superType = (JvmTypeParameterDeclarator) st;
  					int i = 0;
  					for (final JvmTypeParameter typeParameter : superType.getTypeParameters()) {
  						mapping.put(typeParameter.getIdentifier(), parameterizedTypeReference.getArguments().get(i));
  						++i;
  					}
  				}
  			}
  		}
  	}
docs: Extract the mapping between the type parameters declared within the super types and the
  type parameters arguments that are declared within the given type.
  
  <p>For example, consider the following code:
  <pre><code>
  interface X&lt;T&gt; {
  def a(p1 : T, p2 : U) with U
  }
  interface Y&lt;T&gt; {
  }
  class Z&lt;TT&gt; implements X&lt;TT&gt;, Y&lt;TT&gt; {
  def a(p1 : TT, p2 : W) with W { }
  }
  </code></pre>
  The mapping is:
  <pre><code>
  X.T =&gt; TT
  Y.T =&gt; TT
  </code></pre>
  
  @param type the type to analyze.
  @param mapping the map to fill with the mapping.
  @since 0.7