public static ExtensibilityElement getBindingExtension(Binding binding) {
   Collection bindings = new ArrayList();
   CollectionsX.filter(bindings, binding.getExtensibilityElements(), HTTPBinding.class);
   CollectionsX.filter(bindings, binding.getExtensibilityElements(), SOAPBinding.class);
   CollectionsX.filter(bindings, binding.getExtensibilityElements(), SOAP12Binding.class);
   if (bindings.size() == 0) {
     return null;
   } else if (bindings.size() > 1) {
     // exception if multiple bindings found
     throw new IllegalArgumentException("Multiple bindings: " + binding.getQName());
   } else {
     // retrieve the single element
     return (ExtensibilityElement) bindings.iterator().next();
   }
 }
  public static <T> T getFirstExtensibilityElement(ElementExtensible parent, Class<T> cls) {
    Collection<T> ee = CollectionsX.filter(parent.getExtensibilityElements(), cls);

    return ee.isEmpty() ? null : ee.iterator().next();
  }