def method_missing(meth, *args, &block)
      result = @branches.__send__(meth, *args, &block)

      if result.is_a?(::Array)
        BranchCollection.new(@repo, result)
      else
        result
      end
    end
def method_missing(meth, *args, &block)
      result = @branches.__send__(meth, *args, &block)

      if result.is_a?(::Array)
        BranchCollection.new(@repo, result)
      else
        result
      end
    end
Dispatch to the underlying Array of Branch objects, allowing the branch collection to act a
 bit like an Array.

 If the dispatched-to method returns an Array, it is wrapped in another BranchCollection object
 before returning to the caller. This allows array-like method calls to be chained together
 without losing the BranchCollection-ness of the underlying object.