class Xcodeproj::Project::Object::PBXGroup

@todo The ‘source_tree` can probably be more than just `<group>`.

def <<(child)

def <<(child)
  children << child
end

def create_file(path)

def create_file(path)
  files.new("path" => path)
end

def create_files(paths)

def create_files(paths)
  paths.map { |path| create_file(path) }
end

def create_group(name)

def create_group(name)
  groups.new("name" => name)
end

def files

def files
  children.list_by_class(PBXFileReference)
end

def groups

def groups
  children.list_by_class(PBXGroup)
end

def initialize(*)

def initialize(*)
  super
  self.source_tree ||= '<group>'
  self.child_references ||= []
end

def main_group?

def main_group?
  @project.main_group.uuid == uuid
end

def name

def name
  if name = super
    name
  elsif attributes.has_key?('path')
    File.basename(attributes['path'])
  elsif main_group?
    'Main Group'
  end
end

def source_files

def source_files
  children.list_by_class(PBXFileReference) do |list|
    list.let(:uuid_scope) do
      files.reject { |file| file.build_files.empty? }.map(&:uuid)
    end
  end
end