+ return BasicBinaryDomainCombination.obtainInstance( ids_ary[ 0 ], ids_ary[ 1 ] );
+ }
+
+ public static BasicBinaryDomainCombination obtainInstance( final String id0, final String id1 ) {
+ int code;
+ if ( id0.toLowerCase().compareTo( id1.toLowerCase() ) < 0 ) {
+ code = calcCode( BasicDomain.obtainIdAsShort( id0 ), BasicDomain.obtainIdAsShort( id1 ) );
+ }
+ else {
+ code = calcCode( BasicDomain.obtainIdAsShort( id1 ), BasicDomain.obtainIdAsShort( id0 ) );
+ }
+ if ( DC_POOL.containsKey( code ) ) {
+ return DC_POOL.get( code );
+ }
+ else {
+ final BasicBinaryDomainCombination dc = new BasicBinaryDomainCombination( id0, id1 );
+ DC_POOL.put( code, dc );
+ if ( VERBOSE && ( DC_POOL.size() % 100 == 0 ) ) {
+ System.out.println( " dc pool size: " + DC_POOL.size() );
+ }
+ return dc;
+ }
+ }
+
+ final static int calcCode( final int id0, final int id1 ) {
+ return ( id0 * ( Short.MAX_VALUE + 1 ) ) + id1;