hunk.code_window:   public static final String NOTIFICATION_OBJECT_KEY = "notification_object";
     public static final String DEV_FLAG = "dev_flag";
     public static Class MAIN_ACTIVITY_CLASS = DetachActivity.class;
     public static class ExperienceOptions {
       public final String manifestUri;
       public final String uri;
       public final String notification; // deprecated
  
hunk.labels: keep keep keep add keep keep keep keep keep
hunk.after_edit:   static {
       try {
         MAIN_ACTIVITY_CLASS = Class.forName("host.exp.exponent.MainActivity");
       } catch (Exception e) {
         EXL.e(TAG, "Could not find MainActivity, falling back to DetachActivity: " + e.getMessage());
       }
     }
  
hunk.file_path: android/expoview/src/main/java/host/exp/exponent/kernel/KernelConstants.java
hunk.type: add
file: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD-style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   *
   * @providesModule LazyRenderer
   */
  'use strict';
  
  var React = require('react');
  var createReactClass = require('create-react-class');
  var PropTypes = require('prop-types');
  var TimerMixin = require('react-timer-mixin');
  
  var LazyRenderer = createReactClass({
    displayName: 'LazyRenderer',
    mixin: [TimerMixin],
  
    propTypes: {
      render: PropTypes.func.isRequired,
    },
  
    componentWillMount: function(): void {
      this.setState({
        _lazyRender : true,
      });
    },
  
    componentDidMount: function(): void {
      requestAnimationFrame(() => {
        this.setState({
          _lazyRender : false,
        });
      });
    },
  
    render: function(): ?React.Element {
      return this.state._lazyRender ? null : this.props.render();
    },
  });
  
  module.exports = LazyRenderer;
  