In cases like 1m4x the assembly operators are given as cartesian products where 2 (or more) operators have to be applied in turn. E.g. is 1m4x:
loop_
_pdbx_struct_assembly_gen.assembly_id
_pdbx_struct_assembly_gen.oper_expression
_pdbx_struct_assembly_gen.asym_id_list
1 '(1-60)(61-88)' A,B,C
2 '(61-88)' A,B,C
3 '(1-5)(61-88)' A,B,C
4 '(1,2,6,10,23,24)(61-88)' A,B,C
5 '(1-5)(63-68)' A,B,C
6 '(1,10,23)(61,62,69-88)' A,B,C
7 '(P)(61-88)' A,B,C
BioJava deals correctly with this but assigning sequential operator ids instead of the original ones in _pdbx_struct_oper_list.id. It'd be better to use the original operators so that the resulting identifiers can be recognised by other tools (e.g. when outputting assemblies to mmcif files).