public synchronized void build(){
  if (built)   return;
  root=itemBoundables.isEmpty() ? createNode(0) : createHigherLevels(itemBoundables,-1);
  itemBoundables=null;
  built=true;
}

public synchronized void build ( ) { if ( built ) return ; root = itemBoundables . isEmpty ( ) ? createNode ( 0 ) : createHigherLevels ( itemBoundables , - 1 ) ; itemBoundables = null ; built = true ; }
creates parent nodes , grandparent nodes , and so forth up to the root node , for the data that has been inserted into the tree . can only be called once , and thus can be called only after all of the data has been inserted into the tree .
