Source:
protected void configure() { super.configure(); bind(ComputeService.class).to(GoogleComputeEngineService.class); bind(new TypeLiteral<ComputeServiceAdapter<InstanceInZone, MachineTypeInZone, Image, Zone>>() {}) .to(GoogleComputeEngineServiceAdapter.class); bind(new TypeLiteral<Function<InstanceInZone, NodeMetadata>>() {}) .to(InstanceInZoneToNodeMetadata.class); bind(new TypeLiteral<Function<MachineTypeInZone, Hardware>>() {}) .to(MachineTypeInZoneToHardware.class); bind(new TypeLiteral<Function<Image, org.jclouds.compute.domain.Image>>() {}) .to(GoogleComputeEngineImageToImage.class); bind(new TypeLiteral<Function<Zone, Location>>() {}) .to(ZoneToLocation.class); bind(new TypeLiteral<Function<TemplateOptions, ImmutableMap.Builder<String, String>>>() {}) .to(BuildInstanceMetadata.class); bind(org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy.class) .to(PopulateDefaultLoginCredentialsForImageStrategy.class); bind(org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.class).to( CreateNodesWithGroupEncodedIntoNameThenAddToSet.class); bind(TemplateOptions.class).to(GoogleComputeEngineTemplateOptions.class); bind(new TypeLiteral<Function<Set<? extends NodeMetadata>, Set<String>>>() {}) .to(OrphanedGroupsFromDeadNodes.class); bind(new TypeLiteral<Predicate<String>>() {}).to(AllNodesInGroupTerminated.class); bind(PrioritizeCredentialsFromTemplate.class).to(UseNodeCredentialsButOverrideFromTemplate.class); install(new LocationsFromComputeServiceAdapterModule<InstanceInZone, MachineTypeInZone, Image, Zone>() {}); this.bind(FirewallTagNamingConvention.Factory.class).in(Scopes.SINGLETON); }

Target:
protected void configure() { super.configure(); bind(ComputeService.class).to(GoogleComputeEngineService.class); bind(new TypeLiteral<ComputeServiceAdapter<InstanceInZone, MachineTypeInZone, Image, Zone>>() {}) .to(GoogleComputeEngineServiceAdapter.class); bind(new TypeLiteral<Function<InstanceInZone, NodeMetadata>>() {}) .to(InstanceInZoneToNodeMetadata.class); bind(new TypeLiteral<Function<MachineTypeInZone, Hardware>>() {}) .to(MachineTypeInZoneToHardware.class); bind(new TypeLiteral<Function<Image, org.jclouds.compute.domain.Image>>() {}) .to(GoogleComputeEngineImageToImage.class); bind(new TypeLiteral<Function<Zone, Location>>() {}) .to(ZoneToLocation.class); bind(new TypeLiteral<Function<TemplateOptions, ImmutableMap.Builder<String, String>>>() {}) .to(BuildInstanceMetadata.class); bind(org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy.class) .to(PopulateDefaultLoginCredentialsForImageStrategy.class); bind(org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.class).to( CreateNodesWithGroupEncodedIntoNameThenAddToSet.class); bind(TemplateOptions.class).to(GoogleComputeEngineTemplateOptions.class); bind(new TypeLiteral<Function<Set<? extends NodeMetadata>, Set<String>>>() {}) .to(OrphanedGroupsFromDeadNodes.class); bind(new TypeLiteral<Predicate<String>>() {}).to(AllNodesInGroupTerminated.class); bind(PrioritizeCredentialsFromTemplate.class).to(UseNodeCredentialsButOverrideFromTemplate.class); install(new LocationsFromComputeServiceAdapterModule<InstanceInZone, MachineTypeInZone, Image, Zone>() {}); bind(FirewallTagNamingConvention.Factory.class).in(Scopes.SINGLETON); }