// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/SLBLoadBalancerService.java
// @Singleton
// public class SLBLoadBalancerService extends BaseLoadBalancerService {
// 
//    protected final LoadBalancerServiceAdapter<LoadBalancerMetadata, Location> adapter;
// 
//    @Inject
//    protected SLBLoadBalancerService(
//          LoadBalancerServiceAdapter<LoadBalancerMetadata, Location> adapter,
//          LoadBalancerServiceContext context,
//          Supplier<Location> defaultLocationSupplier,
//          @Memoized Supplier<Set<? extends Location>> locations,
//          LoadBalanceNodesStrategy loadBalancerStrategy,
//          GetLoadBalancerMetadataStrategy getLoadBalancerMetadataStrategy,
//          DestroyLoadBalancerStrategy destroyLoadBalancerStrategy,
//          ListLoadBalancersStrategy listLoadBalancersStrategy) {
//       super(defaultLocationSupplier, context, loadBalancerStrategy,
//             getLoadBalancerMetadataStrategy, destroyLoadBalancerStrategy,
//             listLoadBalancersStrategy, locations);
//       this.adapter = adapter;
//    }
// 
//    @Override
//    public Set<? extends Location> listAssignableLocations() {
//       return ImmutableSet.<Location> builder()
//             .addAll(adapter.listAssignableLocations())
//             .build();
//    }
// }
// 
// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/SLBLoadBalancerServiceContext.java
// @ImplementedBy(SLBLoadBalancerServiceContextImpl.class)
// public interface SLBLoadBalancerServiceContext extends LoadBalancerServiceContext {
// 
//    @Override
//    SLBLoadBalancerService getLoadBalancerService();
// }


import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.Context;
import org.jclouds.aliyun.slb.loadbalancer.SLBLoadBalancerService;
import org.jclouds.aliyun.slb.loadbalancer.SLBLoadBalancerServiceContext;
import org.jclouds.loadbalancer.LoadBalancerService;
import org.jclouds.loadbalancer.internal.LoadBalancerServiceContextImpl;
import org.jclouds.location.Provider;
import org.jclouds.rest.Utils;
import com.google.common.reflect.TypeToken;
package org.jclouds.aliyun.slb.loadbalancer.internal;




@Singleton
public class SLBLoadBalancerServiceContextImpl extends LoadBalancerServiceContextImpl implements SLBLoadBalancerServiceContext {

   @Inject
   public SLBLoadBalancerServiceContextImpl(
         @Provider Context backend,
         @Provider TypeToken<? extends Context> backendType,
         LoadBalancerService loadBalancerService,
         Utils utils) {
      super(backend, backendType, loadBalancerService, utils);
   }

   @Override
// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/SLBLoadBalancerService.java
// @Singleton
// public class SLBLoadBalancerService extends BaseLoadBalancerService {
// 
//    protected final LoadBalancerServiceAdapter<LoadBalancerMetadata, Location> adapter;
// 
//    @Inject
//    protected SLBLoadBalancerService(
//          LoadBalancerServiceAdapter<LoadBalancerMetadata, Location> adapter,
//          LoadBalancerServiceContext context,
//          Supplier<Location> defaultLocationSupplier,
//          @Memoized Supplier<Set<? extends Location>> locations,
//          LoadBalanceNodesStrategy loadBalancerStrategy,
//          GetLoadBalancerMetadataStrategy getLoadBalancerMetadataStrategy,
//          DestroyLoadBalancerStrategy destroyLoadBalancerStrategy,
//          ListLoadBalancersStrategy listLoadBalancersStrategy) {
//       super(defaultLocationSupplier, context, loadBalancerStrategy,
//             getLoadBalancerMetadataStrategy, destroyLoadBalancerStrategy,
//             listLoadBalancersStrategy, locations);
//       this.adapter = adapter;
//    }
// 
//    @Override
//    public Set<? extends Location> listAssignableLocations() {
//       return ImmutableSet.<Location> builder()
//             .addAll(adapter.listAssignableLocations())
//             .build();
//    }
// }
// 
// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/SLBLoadBalancerServiceContext.java
// @ImplementedBy(SLBLoadBalancerServiceContextImpl.class)
// public interface SLBLoadBalancerServiceContext extends LoadBalancerServiceContext {
// 
//    @Override
//    SLBLoadBalancerService getLoadBalancerService();
// }


// Path: aliyun-slb/src/main/java/org/jclouds/aliyun/slb/loadbalancer/internal/SLBLoadBalancerServiceContextImpl.java
import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.Context;
import org.jclouds.aliyun.slb.loadbalancer.SLBLoadBalancerService;
import org.jclouds.aliyun.slb.loadbalancer.SLBLoadBalancerServiceContext;
import org.jclouds.loadbalancer.LoadBalancerService;
import org.jclouds.loadbalancer.internal.LoadBalancerServiceContextImpl;
import org.jclouds.location.Provider;
import org.jclouds.rest.Utils;
import com.google.common.reflect.TypeToken;

package org.jclouds.aliyun.slb.loadbalancer.internal;




@Singleton
public class SLBLoadBalancerServiceContextImpl extends LoadBalancerServiceContextImpl implements SLBLoadBalancerServiceContext {

   @Inject
   public SLBLoadBalancerServiceContextImpl(
         @Provider Context backend,
         @Provider TypeToken<? extends Context> backendType,
         LoadBalancerService loadBalancerService,
         Utils utils) {
      super(backend, backendType, loadBalancerService, utils);
   }

   @Override
   public SLBLoadBalancerService getLoadBalancerService() {