private FieldBridge getFieldBridgeFromBridgeProvider(
     BridgeProvider bridgeProvider,
     ExtendedBridgeProvider.ExtendedBridgeProviderContext context,
     ContainerType containerType) {
   FieldBridge bridge = bridgeProvider.provideFieldBridge(context);
   if (bridge == null) {
     return null;
   }
   populateReturnType(context.getReturnType(), bridge.getClass(), bridge);
   switch (containerType) {
     case SINGLE:
       return bridge;
     case ITERABLE:
       // Should we cache these per bridge instance?
       // would make sense at least for the known built-in bridges
       // but is that worth it?
       return new BuiltinIterableBridge(bridge);
     case ARRAY:
       return new BuiltinArrayBridge(bridge);
     case MAP:
       return new BuiltinMapBridge(bridge);
     default:
       throw new AssertionFailure("Unknown ContainerType " + containerType);
   }
 }