public static EprMetaData getBindingForTypeId(String repId, Definition wsdlDef) {
    LOG.log(
        Level.FINE, "RepositoryId " + repId + ", wsdl namespace " + wsdlDef.getTargetNamespace());
    EprMetaData ret = new EprMetaData();
    Collection<Binding> bindings = CastUtils.cast(wsdlDef.getBindings().values());
    for (Binding b : bindings) {
      List<?> extElements = b.getExtensibilityElements();

      // Get the list of all extensibility elements
      for (Iterator<?> extIter = extElements.iterator(); extIter.hasNext(); ) {
        java.lang.Object element = extIter.next();

        // Find a binding type so we can check against its repository ID
        if (element instanceof BindingType) {
          BindingType type = (BindingType) element;
          if (repId.equals(type.getRepositoryID())) {
            ret.setCandidateWsdlDef(wsdlDef);
            ret.setBinding(b);
            return ret;
          }
        }
      }
    }

    if (!ret.isValid()) {
      // recursivly check imports
      Iterator<?> importLists = wsdlDef.getImports().values().iterator();
      while (importLists.hasNext()) {
        List<?> imports = (List<?>) importLists.next();
        for (java.lang.Object imp : imports) {
          if (imp instanceof Import) {
            Definition importDef = ((Import) imp).getDefinition();
            LOG.log(Level.INFO, "Following import " + importDef.getDocumentBaseURI());
            ret = getBindingForTypeId(repId, importDef);
            if (ret.isValid()) {
              return ret;
            }
          }
        }
      }
    }
    return ret;
  }
  public static Binding getDefaultBinding(Object obj, Definition wsdlDef) {
    LOG.log(Level.FINEST, "Getting binding for a default object reference");
    Collection<Binding> bindings = CastUtils.cast(wsdlDef.getBindings().values());
    for (Binding b : bindings) {
      List<?> extElements = b.getExtensibilityElements();
      // Get the list of all extensibility elements
      for (Iterator<?> extIter = extElements.iterator(); extIter.hasNext(); ) {
        java.lang.Object element = extIter.next();

        // Find a binding type so we can check against its repository ID
        if (element instanceof BindingType) {
          BindingType type = (BindingType) element;
          if (obj._is_a(type.getRepositoryID())) {
            return b;
          }
        }
      }
    }
    return null;
  }