code: def insert_entry_for_bucket(self, bucket_key, tree_depth):
          
  
          # First increase vector count of this subtree
          self.vector_count = self.vector_count + 1
  
          if tree_depth < len(bucket_key):
              hash_char = bucket_key[tree_depth]
  
              # This is not the leaf so continue down into the tree towards the leafes
  
              #print 'hash_char=%c' % hash_char
  
              # If child node for this character ('0' or '1') is not existing yet, create it
              if not hash_char in self.childs:
                  #print 'Creating child for %c' % hash_char
                  self.childs[hash_char] = RandomBinaryProjectionTreeNode()
  
              # Continue on the child
              self.childs[hash_char].insert_entry_for_bucket(bucket_key, tree_depth+1)
          else:
              # This is a leaf, so keep the bucket key
              #print 'Inserting leaf %s(%s, %d), count is %d' % (bucket_key, self.bucket_key, tree_depth, self.vector_count)
              if not self.bucket_key is None:
                  if self.bucket_key != bucket_key:
                      raise AttributeError
              self.bucket_key = bucket_key
docs: Increases counter for specified bucket_key (leaf of tree) and
          also increases counters along the way from the root to the leaf.