def to_tree_hash
      hash = {}
      objects_dictionary = {}
      hash['objects']        =  objects_dictionary
      hash['archiveVersion'] =  archive_version.to_s
      hash['objectVersion']  =  object_version.to_s
      hash['classes']        =  classes
      hash['rootObject']     =  root_object.to_tree_hash
      hash
    end
def to_tree_hash
      hash = {}
      objects_dictionary = {}
      hash['objects']        =  objects_dictionary
      hash['archiveVersion'] =  archive_version.to_s
      hash['objectVersion']  =  object_version.to_s
      hash['classes']        =  classes
      hash['rootObject']     =  root_object.to_tree_hash
      hash
    end
Converts the objects tree to a hash substituting the hash
 of the referenced to their UUID reference. As a consequence the hash of
 an object might appear multiple times and the information about their
 uniqueness is lost.

 This method is designed to work in conjunction with {Hash#recursive_diff}
 to provide a complete, yet readable, diff of two projects *not* affected
 by differences in UUIDs.

 @return [Hash] a hash representation of the project different from the
         plist one.