private AssociationMetadata associationMetadataFromPortMapping(PortMapping portMapping) {
   String publicIpId = portMapping.getPublicEndpoint().getHostText();
   HostAndPort publicEndpoint = portMapping.getPublicEndpoint();
   Location location = portMapping.getTarget();
   int privatePort = portMapping.getPrivatePort();
   return new AssociationMetadata(publicIpId, publicEndpoint, location, privatePort);
 }
 @Override
 public PortMapping getPortMappingWithPrivateSide(Location l, int privatePort) {
   synchronized (mutex) {
     for (PortMapping m : mappings.values())
       if (l.equals(m.getTarget()) && privatePort == m.privatePort) return m;
   }
   return null;
 }
 /** returns the subset of port mappings associated with a given location */
 @Override
 public Collection<PortMapping> getLocationPublicIpIds(Location l) {
   List<PortMapping> result = new ArrayList<PortMapping>();
   synchronized (mutex) {
     for (PortMapping m : mappings.values()) if (l.equals(m.getTarget())) result.add(m);
   }
   return result;
 }