Buggy code:
int prefixLength = summaryOnlyNetwork . getSubnetMask ( ) . numSubnetBits ( ) ; RouteFilterLengthRangeLine line = new RouteFilterLengthRangeLine ( LineAction . ACCEPT , prefix , prefixLength , new SubRange ( ( prefixLength + 1 ) , 32 ) ) ; matchSuppressedSummaryOnlyRoutes . addLine ( line ) ; } PolicyMapMatchRouteFilterListLine matchLine = new PolicyMapMatchRouteFilterListLine ( Collections . singleton ( matchSuppressedSummaryOnlyRoutes ) ) ; PolicyMapClause clause = new PolicyMapClause ( ) ; clause . setAction ( PERMIT ) ; clause . getMatchLines ( ) . add ( matchLine ) ; suppressSummaryOnly . getClauses ( ) . add ( clause ) ; } PolicyMap redistributeStaticPolicyMap = null ; BgpRedistributionPolicy redistributeStaticPolicy = proc . getRedistributionPolicies ( ) . get ( STATIC ) ; if ( redistributeStaticPolicy != null ) { String mapName = redistributeStaticPolicy . getMap ( ) ; if ( mapName != null ) { redistributeStaticPolicyMap = c . getPolicyMaps ( ) . get ( mapName ) ; } else { redistributeStaticPolicyMap = CiscoVendorConfiguration . makeRouteExportPolicy ( c , "~BGP_REDISTRIBUTE_STATIC_ORIGINATION_POLICY~" , null , null , 0 , null , null , null , STATIC , PERMIT ) ; } } for ( IpBgpPeerGroup ipg : proc . getIpPeerGroups ( ) . values ( ) ) { String groupName = ipg . getGroupName ( ) ; if ( groupName != null ) { NamedBgpPeerGroup parentPeerGroup = proc . getNamedPeerGroups ( ) . get ( groupName ) ; ipg . inheritUnsetFields ( parentPeerGroup ) ; } ipg . inheritUnsetFields ( proc . getMasterBgpPeerGroup ( ) ) ; } for ( IpBgpPeerGroup pg : proc . getIpPeerGroups ( ) . values ( ) ) { String updateSourceInterface = pg . getUpdateSource ( ) ; String updateSource = null ; if ( updateSourceInterface == null ) { Ip processRouterId = proc . getRouterId ( ) ; if ( processRouterId == null ) { processRouterId = new Ip ( 0L ) ; for ( String iname : c . getInterfaces ( ) . keySet ( ) ) { if ( iname . startsWith ( "Loopback" ) ) { Ip currentIp = c . getInterfaces ( ) . get ( iname ) . getIP ( ) ; if ( ( currentIp != null ) && ( ( currentIp . asLong ( ) ) > ( processRouterId . asLong ( ) ) ) ) { processRouterId = currentIp ; } } } if ( ( processRouterId . asLong ( ) ) == 0 ) { for ( batfish . representation . Interface currentInterface : c . getInterfaces ( ) . values ( ) ) { Ip currentIp = currentInterface . getIP ( ) ; if ( ( currentIp != null ) && ( ( currentIp . asLong ( ) ) > ( processRouterId . asLong ( ) ) ) ) { processRouterId = currentIp ; } } } } updateSource = processRouterId . toString ( ) ; } else { batfish . representation . Interface sourceInterface = c . getInterfaces ( ) . get ( updateSourceInterface ) ; if ( sourceInterface != null ) { Ip sourceIp = c . getInterfaces ( ) . get ( updateSourceInterface ) . getIP ( ) ; updateSource = sourceIp . toString ( ) ; } else { throw new VendorConversionException ( ( ( "reference<seq2seq4repair_space>to<seq2seq4repair_space>undefined<seq2seq4repair_space>interface:<seq2seq4repair_space>\"" + updateSourceInterface ) + "\"" ) ) ; } } PolicyMap newInboundPolicyMap = null ; String inboundRouteMapName = pg . getInboundRouteMap ( ) ; if ( inboundRouteMapName != null ) { newInboundPolicyMap = c . getPolicyMaps ( ) . get ( inboundRouteMapName ) ; if ( newInboundPolicyMap == null ) { throw new VendorConversionException ( ( "undefined<seq2seq4repair_space>reference<seq2seq4repair_space>to<seq2seq4repair_space>inbound<seq2seq4repair_space>policy<seq2seq4repair_space>map:<seq2seq4repair_space>" + inboundRouteMapName ) ) ; } } PolicyMap newOutboundPolicyMap = null ; String outboundRouteMapName = pg . getOutboundRouteMap ( ) ; if ( outboundRouteMapName != null ) { PolicyMap outboundRouteMap = c . getPolicyMaps ( ) . get ( outboundRouteMapName ) ; if ( outboundRouteMap == null ) { throw new VendorConversionException ( ( "undefined<seq2seq4repair_space>reference<seq2seq4repair_space>to<seq2seq4repair_space>outbound<seq2seq4repair_space>policy<seq2seq4repair_space>map:<seq2seq4repair_space>" + outboundRouteMapName ) ) ; } if ( suppressSummaryOnly == null ) { newOutboundPolicyMap = outboundRouteMap ; } else { <START_BUG> String outboundPolicyName = "~COMPOSITE_OUTBOUND_POLICY~" ; <END_BUG> newOutboundPolicyMap = new PolicyMap ( outboundPolicyName ) ; c . getPolicyMaps ( ) . put ( outboundPolicyName , newOutboundPolicyMap ) ; PolicyMapClause denyClause = new PolicyMapClause ( ) ; PolicyMapMatchPolicyLine matchSuppressPolicyLine = new PolicyMapMatchPolicyLine ( suppressSummaryOnly ) ; denyClause . getMatchLines ( ) . add ( matchSuppressPolicyLine ) ; denyClause . setAction ( DENY ) ; newOutboundPolicyMap . getClauses ( ) . add ( denyClause ) ; PolicyMapClause permitClause = new PolicyMapClause ( ) ; permitClause . setAction ( PERMIT ) ; PolicyMapMatchPolicyLine matchOutboundPolicyLine = new PolicyMapMatchPolicyLine ( outboundRouteMap ) ; permitClause . getMatchLines ( ) . add ( matchOutboundPolicyLine ) ; newOutboundPolicyMap . getClauses ( ) . add ( permitClause ) ; } } else { newOutboundPolicyMap = suppressSummaryOnly ; if ( suppressSummaryOnly != null ) { suppressSummaryOnly . getClauses ( ) . get ( 0 ) . setAction ( DENY ) ; PolicyMapClause permitClause = new PolicyMapClause ( ) ; permitClause . setAction ( PERMIT ) ; suppressSummaryOnly . getClauses ( ) . add ( permitClause ) ; } } Set < PolicyMap > originationPolicies = new LinkedHashSet < PolicyMap > ( ) ; RouteFilterList filter = new RouteFilterList ( ( ( "~BGP_PRE_FILTER:" + ( pg . getName ( ) ) ) + "~" ) ) ; for ( BgpNetwork network : proc . getNetworks ( ) ) { Ip netAdd = network . getNetworkAddress ( ) ; int prefixLen = network . getSubnetMask ( ) . numSubnetBits ( ) ; RouteFilterLengthRangeLine line = new RouteFilterLengthRangeLine ( LineAction . ACCEPT , netAdd , prefixLen , new SubRange ( prefixLen , prefixLen ) ) ; filter . addLine ( line ) ; } c . getRouteFilterLists ( ) . put ( filter . getName ( ) , filter ) ; Set < RouteFilterList > rfLines = new LinkedHashSet < RouteFilterList > ( ) ; rfLines . add ( filter ) ;

Fix:
String outboundPolicyName = ( "~COMPOSITE_OUTBOUND_POLICY:" + ( pg . getName ( ) ) ) + "~" ;