test_class.declarator: tester
test_class.original_string: RedBlackTree<String, Integer> tester;
test_class.type: RedBlackTree<String, Integer>
test_class.var_name: tester
test_class.file: sedgwick/redblack/src/ai/tree/RedBlackTreeTest.java
test_class.identifier: RedBlackTreeTest
test_case.body: @Test
  	public void rotateRight1() {
  		// Setup
  		RedBlackTree<String, Integer>.Node nodeR = tester.new Node("R", 1, 6, RedBlackTree.Color.BLACK);
  		RedBlackTree<String, Integer>.Node nodeE = tester.new Node("E", 1, 4, RedBlackTree.Color.RED);
  		RedBlackTree<String, Integer>.Node nodeC = tester.new Node("C", 1, 2, RedBlackTree.Color.BLACK);
  		RedBlackTree<String, Integer>.Node nodeA = tester.new Node("A", 1, 1, RedBlackTree.Color.RED);
  		RedBlackTree<String, Integer>.Node nodeH = tester.new Node("H", 1, 1, RedBlackTree.Color.BLACK);
  		RedBlackTree<String, Integer>.Node nodeS = tester.new Node("S", 1, 1, RedBlackTree.Color.BLACK);
  		nodeR.left = nodeE;
  		nodeR.right = nodeS;
  		nodeE.left = nodeC;
  		nodeE.right = nodeH;
  		nodeC.left = nodeA;
  		nodeE.right = nodeH;
  		
  		
  		// Rotate right of R
  		RedBlackTree<String, Integer>.Node nodeRRotated = tester.rotateRight(nodeR);
  		assertEquals(nodeRRotated, nodeE);
  		nodeE = nodeRRotated;
  
  		// E OK?
  		assertEquals("E", nodeE.key);
  		assertEquals(RedBlackTree.Color.BLACK, nodeE.color);
  		assertEquals(6, nodeE.N);
  		assertEquals(nodeR, nodeE.right);
  		assertEquals(nodeC, nodeE.left);
  		
  		// R OK?
  		assertEquals("R", nodeR.key);
  		assertEquals(RedBlackTree.Color.RED, nodeR.color);
  		assertEquals(3, nodeR.N);
  		assertEquals(nodeS, nodeR.right);
  		assertEquals(nodeH, nodeR.left);
  		
  		
  		// H OK?
  		assertEquals("H", nodeH.key);
  		assertEquals(RedBlackTree.Color.BLACK, nodeH.color);
  		assertEquals(1, nodeH.N);
  		assertEquals(null, nodeH.left);
  		assertEquals(null, nodeH.right);
  		
  		// C OK?
  		assertEquals("C", nodeC.key);
  		assertEquals(RedBlackTree.Color.BLACK, nodeC.color);
  		assertEquals(2, nodeC.N);
  		assertEquals(nodeA, nodeC.left);
  		assertEquals(null, nodeC.right);
  		
  		// A OK?
  		assertEquals("A", nodeA.key);
  		assertEquals(RedBlackTree.Color.RED, nodeA.color);
  		assertEquals(1, nodeA.N);
  		assertEquals(null, nodeA.left);
  		assertEquals(null, nodeA.right);
  	}
test_case.class_method_signature: RedBlackTreeTest.rotateRight1()
test_case.full_signature: @Test public void rotateRight1()
test_case.identifier: rotateRight1
test_case.invocations: rotateRight assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void rotateRight1()
focal_class.declarator: root = null
focal_class.modifier: protected
focal_class.original_string: protected Node root = null;
focal_class.type: Node
focal_class.var_name: root
focal_class.file: sedgwick/redblack/src/ai/tree/RedBlackTree.java
focal_class.identifier: RedBlackTree
focal_class.class_method_signature: RedBlackTree.put(Key key, Value value)
focal_class.full_signature:  void put(Key key, Value value)
focal_class.identifier: put
focal_class.parameters: (Key key, Value value)
focal_class.return: void
focal_class.signature: void put(Key key, Value value)
focal_class.class_method_signature: RedBlackTree.put(Node h, Key key, Value value)
focal_class.full_signature: private Node put(Node h, Key key, Value value)
focal_class.identifier: put
focal_class.modifiers: private
focal_class.parameters: (Node h, Key key, Value value)
focal_class.return: Node
focal_class.signature: Node put(Node h, Key key, Value value)
focal_class.class_method_signature: RedBlackTree.get(Key key)
focal_class.full_signature:  Value get(Key key)
focal_class.identifier: get
focal_class.parameters: (Key key)
focal_class.return: Value
focal_class.signature: Value get(Key key)
focal_class.class_method_signature: RedBlackTree.get(Node x, Key key)
focal_class.full_signature: private Value get(Node x, Key key)
focal_class.identifier: get
focal_class.modifiers: private
focal_class.parameters: (Node x, Key key)
focal_class.return: Value
focal_class.signature: Value get(Node x, Key key)
focal_class.class_method_signature: RedBlackTree.deleteMin()
focal_class.full_signature:  void deleteMin()
focal_class.identifier: deleteMin
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void deleteMin()
focal_class.class_method_signature: RedBlackTree.deleteMax()
focal_class.full_signature:  void deleteMax()
focal_class.identifier: deleteMax
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void deleteMax()
focal_class.class_method_signature: RedBlackTree.delete(Key key)
focal_class.full_signature:  void delete(Key key)
focal_class.identifier: delete
focal_class.parameters: (Key key)
focal_class.return: void
focal_class.signature: void delete(Key key)
focal_class.class_method_signature: RedBlackTree.contains(Key key)
focal_class.full_signature:  boolean contains(Key key)
focal_class.identifier: contains
focal_class.parameters: (Key key)
focal_class.return: boolean
focal_class.signature: boolean contains(Key key)
focal_class.class_method_signature: RedBlackTree.isEmpty()
focal_class.full_signature:  boolean isEmpty()
focal_class.identifier: isEmpty
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isEmpty()
focal_class.class_method_signature: RedBlackTree.size()
focal_class.full_signature:  int size()
focal_class.identifier: size
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int size()
focal_class.class_method_signature: RedBlackTree.size(Key lo, Key hi)
focal_class.full_signature:  int size(Key lo, Key hi)
focal_class.identifier: size
focal_class.parameters: (Key lo, Key hi)
focal_class.return: int
focal_class.signature: int size(Key lo, Key hi)
focal_class.class_method_signature: RedBlackTree.min()
focal_class.full_signature:  Key min()
focal_class.identifier: min
focal_class.parameters: ()
focal_class.return: Key
focal_class.signature: Key min()
focal_class.class_method_signature: RedBlackTree.max()
focal_class.full_signature:  Key max()
focal_class.identifier: max
focal_class.parameters: ()
focal_class.return: Key
focal_class.signature: Key max()
focal_class.class_method_signature: RedBlackTree.floor(Key key)
focal_class.full_signature:  Key floor(Key key)
focal_class.identifier: floor
focal_class.parameters: (Key key)
focal_class.return: Key
focal_class.signature: Key floor(Key key)
focal_class.class_method_signature: RedBlackTree.ceiling(Key key)
focal_class.full_signature:  Key ceiling(Key key)
focal_class.identifier: ceiling
focal_class.parameters: (Key key)
focal_class.return: Key
focal_class.signature: Key ceiling(Key key)
focal_class.class_method_signature: RedBlackTree.rank(Key key)
focal_class.full_signature:  int rank(Key key)
focal_class.identifier: rank
focal_class.parameters: (Key key)
focal_class.return: int
focal_class.signature: int rank(Key key)
focal_class.class_method_signature: RedBlackTree.select(int k)
focal_class.full_signature:  Key select(int k)
focal_class.identifier: select
focal_class.parameters: (int k)
focal_class.return: Key
focal_class.signature: Key select(int k)
focal_class.class_method_signature: RedBlackTree.keys()
focal_class.full_signature:  Iterable<Key> keys()
focal_class.identifier: keys
focal_class.parameters: ()
focal_class.return: Iterable<Key>
focal_class.signature: Iterable<Key> keys()
focal_class.class_method_signature: RedBlackTree.keys(Node x, List<Key> acc)
focal_class.full_signature: private void keys(Node x, List<Key> acc)
focal_class.identifier: keys
focal_class.modifiers: private
focal_class.parameters: (Node x, List<Key> acc)
focal_class.return: void
focal_class.signature: void keys(Node x, List<Key> acc)
focal_class.class_method_signature: RedBlackTree.nodes()
focal_class.full_signature: protected Iterable<Node> nodes()
focal_class.identifier: nodes
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.return: Iterable<Node>
focal_class.signature: Iterable<Node> nodes()
focal_class.class_method_signature: RedBlackTree.nodes(Node x, List<Node> acc)
focal_class.full_signature: private void nodes(Node x, List<Node> acc)
focal_class.identifier: nodes
focal_class.modifiers: private
focal_class.parameters: (Node x, List<Node> acc)
focal_class.return: void
focal_class.signature: void nodes(Node x, List<Node> acc)
focal_class.class_method_signature: RedBlackTree.keys(Key lo, Key hi)
focal_class.full_signature:  Iterable<Key> keys(Key lo, Key hi)
focal_class.identifier: keys
focal_class.parameters: (Key lo, Key hi)
focal_class.return: Iterable<Key>
focal_class.signature: Iterable<Key> keys(Key lo, Key hi)
focal_class.class_method_signature: RedBlackTree.isRed(Node x)
focal_class.full_signature: protected boolean isRed(Node x)
focal_class.identifier: isRed
focal_class.modifiers: protected
focal_class.parameters: (Node x)
focal_class.return: boolean
focal_class.signature: boolean isRed(Node x)
focal_class.class_method_signature: RedBlackTree.size(Node x)
focal_class.full_signature: protected int size(Node x)
focal_class.identifier: size
focal_class.modifiers: protected
focal_class.parameters: (Node x)
focal_class.return: int
focal_class.signature: int size(Node x)
focal_class.class_method_signature: RedBlackTree.rotateLeft(Node h)
focal_class.full_signature: protected Node rotateLeft(Node h)
focal_class.identifier: rotateLeft
focal_class.modifiers: protected
focal_class.parameters: (Node h)
focal_class.return: Node
focal_class.signature: Node rotateLeft(Node h)
focal_class.class_method_signature: RedBlackTree.rotateRight(Node h)
focal_class.full_signature: protected Node rotateRight(Node h)
focal_class.identifier: rotateRight
focal_class.modifiers: protected
focal_class.parameters: (Node h)
focal_class.return: Node
focal_class.signature: Node rotateRight(Node h)
focal_class.class_method_signature: RedBlackTree.flipColors(Node h)
focal_class.full_signature: protected void flipColors(Node h)
focal_class.identifier: flipColors
focal_class.modifiers: protected
focal_class.parameters: (Node h)
focal_class.return: void
focal_class.signature: void flipColors(Node h)
focal_class.class_method_signature: RedBlackTree.check()
focal_class.full_signature: private boolean check()
focal_class.identifier: check
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean check()
focal_class.class_method_signature: RedBlackTree.is23()
focal_class.full_signature: private boolean is23()
focal_class.identifier: is23
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean is23()
focal_class.class_method_signature: RedBlackTree.is23(Node x)
focal_class.full_signature: private boolean is23(Node x)
focal_class.identifier: is23
focal_class.modifiers: private
focal_class.parameters: (Node x)
focal_class.return: boolean
focal_class.signature: boolean is23(Node x)
focal_class.class_method_signature: RedBlackTree.isBalanced()
focal_class.full_signature: private boolean isBalanced()
focal_class.identifier: isBalanced
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isBalanced()
focal_class.class_method_signature: RedBlackTree.isBalanced(Node x, int black)
focal_class.full_signature: private boolean isBalanced(Node x, int black)
focal_class.identifier: isBalanced
focal_class.modifiers: private
focal_class.parameters: (Node x, int black)
focal_class.return: boolean
focal_class.signature: boolean isBalanced(Node x, int black)
focal_method.body: protected Node rotateRight(Node h) {
  		assert(h != null);
  		
  		// Links
  		Node x = h.left;
  		h.left = x.right;
  		x.right = h;
  		
  		// Colors
  		x.color = h.color;
  		h.color = RedBlackTree.Color.RED;
  		
  		// Numbers
  		x.N = h.N;
  		h.N = 1 + size(h.left) + size(h.right); 
  		
  		return x;
  	}
focal_method.class_method_signature: RedBlackTree.rotateRight(Node h)
focal_method.full_signature: protected Node rotateRight(Node h)
focal_method.identifier: rotateRight
focal_method.invocations: size size
focal_method.modifiers: protected
focal_method.parameters: (Node h)
focal_method.return: Node
focal_method.signature: Node rotateRight(Node h)