public String toString(){
  if (cached != null) {
    return cached;
  }
  StringBuilder sb=new StringBuilder();
  for (int i=num - 1; i >= 0; i--) {
    sb.append(FreeCellNode.out(cards[i]));
  }
  cached=sb.toString();
  return cached;
}

public String toString ( ) { if ( cached != null ) { return cached ; } StringBuilder sb = new StringBuilder ( ) ; for ( int i = num - 1 ; i >= 0 ; i -- ) { sb . append ( FreeCellNode . out ( cards [ i ] ) ) ; } cached = sb . toString ( ) ; return cached ; }
create in reverse order to have keys be different early .
