test_class.declarator: ACE = Card.get(Rank.ACE, Suit.CLUBS)
test_class.modifier: private static final
test_class.original_string: private static final Card ACE = Card.get(Rank.ACE, Suit.CLUBS);
test_class.type: Card
test_class.var_name: ACE
test_class.declarator: TWO = Card.get(Rank.TWO, Suit.CLUBS)
test_class.modifier: private static final
test_class.original_string: private static final Card TWO = Card.get(Rank.TWO, Suit.CLUBS);
test_class.type: Card
test_class.var_name: TWO
test_class.declarator: aEmpty
test_class.modifier: private
test_class.original_string: private CardSource aEmpty;
test_class.type: CardSource
test_class.var_name: aEmpty
test_class.declarator: aContainsAce
test_class.modifier: private
test_class.original_string: private CardSource aContainsAce;
test_class.type: CardSource
test_class.var_name: aContainsAce
test_class.declarator: aContainsTwo
test_class.modifier: private
test_class.original_string: private CardSource aContainsTwo;
test_class.type: CardSource
test_class.var_name: aContainsTwo
test_class.file: solutions-code/chapter5/TestBiCardSource.java
test_class.identifier: TestBiCardSource
test_case.body: @Test
  	public void testDraw_NeitherEmpty()
  	{
  		assertSame(ACE, new BiCardSource(aContainsAce, aContainsTwo).draw());
  	}
test_case.class_method_signature: TestBiCardSource.testDraw_NeitherEmpty()
test_case.full_signature: @Test public void testDraw_NeitherEmpty()
test_case.identifier: testDraw_NeitherEmpty
test_case.invocations: assertSame draw
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testDraw_NeitherEmpty()
focal_class.declarator: aSource1
focal_class.modifier: private final
focal_class.original_string: private final CardSource aSource1;
focal_class.type: CardSource
focal_class.var_name: aSource1
focal_class.declarator: aSource2
focal_class.modifier: private final
focal_class.original_string: private final CardSource aSource2;
focal_class.type: CardSource
focal_class.var_name: aSource2
focal_class.file: solutions-code/chapter5/BiCardSource.java
focal_class.identifier: BiCardSource
focal_class.interfaces: implements CardSource
focal_class.class_method_signature: BiCardSource.BiCardSource(CardSource pSource1, CardSource pSource2)
focal_class.full_signature: public  BiCardSource(CardSource pSource1, CardSource pSource2)
focal_class.identifier: BiCardSource
focal_class.modifiers: public
focal_class.parameters: (CardSource pSource1, CardSource pSource2)
focal_class.signature:  BiCardSource(CardSource pSource1, CardSource pSource2)
focal_class.class_method_signature: BiCardSource.draw()
focal_class.full_signature: @Override public Card draw()
focal_class.identifier: draw
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Card
focal_class.signature: Card draw()
focal_class.class_method_signature: BiCardSource.isEmpty()
focal_class.full_signature: @Override public boolean isEmpty()
focal_class.identifier: isEmpty
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isEmpty()
focal_method.body: @Override
  	public Card draw()
  	{
  		if( !aSource1.isEmpty() )
  		{
  			return aSource2.draw();
  		}
  		else
  		{
  			return aSource1.draw();
  		}
  	}
focal_method.class_method_signature: BiCardSource.draw()
focal_method.full_signature: @Override public Card draw()
focal_method.identifier: draw
focal_method.invocations: isEmpty draw draw
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: Card
focal_method.signature: Card draw()