hunk.code_window: - (instancetype)init {
       self = [super init];
       if (self) {
           // Added to work on Expo, should try to upstream.
           if (!branchInstance) {
               branchInstance = [Branch getInstance];
           }
  
hunk.labels: keep keep keep replace keep keep keep keep keep
hunk.after_edit:     if (self && [self.bridge.experienceScope.appOwnership isEqualToString:@"standalone"]) {
  
hunk.file_path: ios/Exponent/Versioned/Modules/Api/Standalone/Branch/RNBranch.m
hunk.type: replace
file: /**
   * Copyright (c) 2015, Facebook, Inc.  All rights reserved.
   */
  
  'use strict';
  
  jest
    .unmock('NavigationTreeNode')
    .unmock('fbjs/lib/invariant')
    .unmock('immutable');
  
  var NavigationTreeNode = require('NavigationTreeNode');
  
  describe('NavigationTreeNode-test', () => {
    it('should be empty', () => {
      var node = new NavigationTreeNode();
      expect(node.getValue()).toEqual(undefined);
      expect(node.getParent()).toEqual(null);
      expect(node.getChildrenCount()).toEqual(0);
      expect(node.getChildAt(0)).toEqual(null);
    });
  
  
    it('should contain value', () => {
      var node = new NavigationTreeNode(123);
      expect(node.getValue()).toEqual(123);
    });
  
    it('should appendChild', () => {
      var papa = new NavigationTreeNode('hedger');
      var baby = new NavigationTreeNode('hedger jr');
      papa.appendChild(baby);
      expect(papa.getChildAt(0)).toEqual(baby);
      expect(papa.getChildrenCount()).toEqual(1);
      expect(baby.getParent()).toEqual(papa);
    });
  
    it('should removeChild', () => {
      var papa = new NavigationTreeNode('Eddard Stark');
      var baby = new NavigationTreeNode('Robb Stark');
      papa.appendChild(baby);
  
      papa.removeChild(baby);
      expect(papa.getChildAt(0)).toEqual(null);
      expect(papa.getChildrenCount()).toEqual(0);
      expect(baby.getParent()).toEqual(null);
    });
  
    it('should not remove non-child', () => {
      var papa = new NavigationTreeNode('dog');
      var baby = new NavigationTreeNode('cat');
      expect(papa.removeChild.bind(papa, baby)).toThrow();
    });
  
    it('should find child', () => {
      var papa = new NavigationTreeNode('Eddard Stark');
      var baby = new NavigationTreeNode('Robb Stark');
  
      papa.appendChild(baby);
      expect(papa.indexOf(baby)).toEqual(0);
  
      papa.removeChild(baby);
      expect(papa.indexOf(baby)).toEqual(-1);
    });
  
  
    it('should traverse each child', () => {
      var parent = new NavigationTreeNode();
      parent.appendChild(new NavigationTreeNode('a'));
      parent.appendChild(new NavigationTreeNode('b'));
      parent.appendChild(new NavigationTreeNode('c'));
      var result = [];
      parent.forEach((child, index) => {
        result[index] = child.getValue();
      });
  
      expect(result).toEqual(['a', 'b', 'c']);
    });
  
    it('should map children', () => {
      var parent = new NavigationTreeNode();
      parent.appendChild(new NavigationTreeNode('a'));
      parent.appendChild(new NavigationTreeNode('b'));
      parent.appendChild(new NavigationTreeNode('c'));
      var result = parent.map((child, index) => {
        return child.getValue();
      });
  
      expect(result).toEqual(['a', 'b', 'c']);
    });
  
    it('should traverse some children', () => {
      var parent = new NavigationTreeNode();
      parent.appendChild(new NavigationTreeNode('a'));
      parent.appendChild(new NavigationTreeNode('b'));
      parent.appendChild(new NavigationTreeNode('c'));
  
      var result = [];
      var value = parent.some((child, index) => {
        if (index > 1) {
          return true;
        } else {
          result[index] = child.getValue();
        }
      });
  
      expect(value).toEqual(true);
      expect(result).toEqual(['a', 'b']);
    });
  });
  