Add an Objective C example.

--
MOS_MIGRATED_REVID=88441991
diff --git a/base_workspace/examples/objc/BUILD b/base_workspace/examples/objc/BUILD
new file mode 100644
index 0000000..0499d61
--- /dev/null
+++ b/base_workspace/examples/objc/BUILD
@@ -0,0 +1,106 @@
+# Copyright 2015 Google Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+objc_binary(
+    name = "PrenotCalculator",
+    srcs = [
+        "PrenotCalculator/main.m",
+    ],
+    infoplist = "PrenotCalculator/PrenotCalculator-Info.plist",
+    visibility = ["//visibility:public"],
+    deps = [
+        ":PrenotCalculatorClasses",
+    ],
+)
+
+objc_library(
+    name = "PrenotCalculatorClasses",
+    srcs = [
+        "PrenotCalculator/AppDelegate.m",
+        "PrenotCalculator/CalculatedValues.m",
+        "PrenotCalculator/CalculatorViewController.m",
+        "PrenotCalculator/CoreData.m",
+        "PrenotCalculator/Equation.m",
+        "PrenotCalculator/Literal.m",
+        "PrenotCalculator/ValuesViewController.m",
+    ],
+    hdrs = glob(
+        ["**/*.h"],
+        exclude = ["PrenotCalculator/Expression.h"],
+    ),
+    bundles = [":PrenotCalculatorResources"],
+    sdk_frameworks = ["CoreData"],
+    xibs = ["PrenotCalculator/CalculatorViewController.xib"],
+    deps = [
+        ":CoreDataResources",
+        ":ExpressionPrebuilt",
+    ],
+)
+
+# A prebuilt library that contains multiple architectures.
+# Currently compiled for: i386, x86_64, armv7.
+objc_import(
+    name = "ExpressionPrebuilt",
+    hdrs = ["PrenotCalculator/Expression.h"],
+    archives = [
+        "expression_prebuilt.a",
+    ],
+)
+
+# Don't use this directly, instead use it to construct ExpressionPrebuilt and
+# depend on that instead. Instructions:
+# Build using the following command repeatedly with the desired CPU values:
+#   bazel build --ios_cpu=<cpu> examples/objc/PrenotCalculator:ExpressionClasses
+# and combining the resulting .a's (copied after each bazel build) using lipo:
+#   /usr/bin/lipo -create expression_i386.a expression_armv7.a -output expression_prebuilt.a
+objc_library(
+    name = "ExpressionClasses",
+    srcs = [
+        "PrenotCalculator/Expression.m",
+    ],
+    hdrs = ["PrenotCalculator/Expression.h"],
+)
+
+objc_bundle_library(
+    name = "PrenotCalculatorResources",
+    resources = glob(["PrenotCalculator/Resources/**"]),
+)
+
+objc_library(
+    name = "CoreDataResources",
+    datamodels = glob(["PrenotCalculator/DataModel.xcdatamodeld/**"]),
+)
+
+# If instruments is supported this genrule should *not timeout* and it should
+# produce a screenshot of the PrenotCalculator.ipa in ~ few seconds.
+genrule(
+    name = "PrenotCalculatorInstruments",
+    srcs = [":PrenotCalculator.ipa"],
+    outs = ["hello_instruments.png"],
+    cmd =
+        # This command expects the PrenotCalculator.ipa as input then unzips
+        # it into a temporary directory, creates a .js script on the fly
+        # that captures a screenshot, and finally invokes /usr/bin/instruments
+        # with the former as arguments.
+        "unzip -q $(location :PrenotCalculator.ipa) -d $${TMPDIR} ; " +
+        "echo 'UIATarget.localTarget().delay(5); UIATarget.localTarget().captureScreenWithName(\"hello_instruments\");' > $${TMPDIR}/hello_instruments.js && " +
+        "/usr/bin/instruments " +
+        "-t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate " +
+        "-w 'iPhone 5 (8.1 Simulator)' " +
+        "$${TMPDIR}/Payload/PrenotCalculator.app " +
+        "-e UIASCRIPT $${TMPDIR}/hello_instruments.js " +
+        "-e UIARESULTSPATH $${TMPDIR} -v && " +
+        "cp $${TMPDIR}'/Run 1/hello_instruments.png' $(@)",
+    tags = ["requires-darwin"],
+)
diff --git a/base_workspace/examples/objc/PrenotCalculator/AppDelegate.h b/base_workspace/examples/objc/PrenotCalculator/AppDelegate.h
new file mode 100644
index 0000000..75b1f1d
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/AppDelegate.h
@@ -0,0 +1,21 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/AppDelegate.m b/base_workspace/examples/objc/PrenotCalculator/AppDelegate.m
new file mode 100644
index 0000000..f6ecc4d
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/AppDelegate.m
@@ -0,0 +1,59 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "AppDelegate.h"
+
+#import "CalculatorViewController.h"
+#import "ValuesViewController.h"
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application
+    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+  [self validateBundleLibrary];
+
+  UITabBarController *bar = [[UITabBarController alloc] init];
+  [bar setViewControllers:
+      @[[[CalculatorViewController alloc] init], [[ValuesViewController alloc] init]]];
+  bar.selectedIndex = 0;
+  self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
+  self.window.rootViewController = bar;
+  [self.window makeKeyAndVisible];
+  return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application {}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {}
+
+- (void)applicationWillTerminate:(UIApplication *)application {}
+
+- (void)validateBundleLibrary {
+  NSString *bundlePath = [[[NSBundle mainBundle] bundlePath]
+      stringByAppendingPathComponent:@"PrenotCalculatorResources.bundle"];
+  NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
+  NSString *testPath = [bundle pathForResource:@"test" ofType:@"txt"];
+  NSString *testContents = [NSString stringWithContentsOfFile:testPath
+                                                     encoding:NSUTF8StringEncoding
+                                                        error:NULL];
+  NSAssert([testContents hasSuffix:@"It worked!\n"],
+           @"Unable to find file given mainBundle: %@",
+           [[NSBundle mainBundle] description]);
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/CalculatedValues.h b/base_workspace/examples/objc/PrenotCalculator/CalculatedValues.h
new file mode 100644
index 0000000..026fadf
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CalculatedValues.h
@@ -0,0 +1,28 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+#import "Equation.h"
+#import "Expression.h"
+
+@interface CalculatedValues : NSObject
+
++ (CalculatedValues *)sharedInstance;
+
+- (NSArray *)values;
+
+- (void)addEquation:(Equation *)equation;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/CalculatedValues.m b/base_workspace/examples/objc/PrenotCalculator/CalculatedValues.m
new file mode 100644
index 0000000..2e401cb
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CalculatedValues.m
@@ -0,0 +1,48 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "CalculatedValues.h"
+
+#import "Equation.h"
+
+@implementation CalculatedValues {
+  NSMutableArray *_values;
+}
+
++ (CalculatedValues *)sharedInstance {
+  static CalculatedValues *values = nil;
+  if (!values) {
+    values = [[[self class] alloc] init];
+  }
+  return values;
+}
+
+- (id)init {
+  self = [super init];
+  if (self) {
+    _values = [NSMutableArray array];
+  }
+  return self;
+}
+
+- (NSArray *)values {
+  return [_values copy];
+}
+
+- (void)addEquation:(Equation *)equation {
+  [_values addObject:
+      [NSString stringWithFormat:@"%@ = %0.2lf", equation, [equation calculate]]];
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.h b/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.h
new file mode 100644
index 0000000..60dbc83
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.h
@@ -0,0 +1,35 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <UIKit/UIKit.h>
+
+@interface CalculatorViewController : UIViewController
+
+- (IBAction)enterDigit:(id)sender;
+
+- (IBAction)finish:(id)sender;
+
+- (IBAction)operate:(id)sender;
+
+@property (weak, nonatomic) IBOutlet UIButton *divideButton;
+@property (weak, nonatomic) IBOutlet UIButton *multiplyButton;
+@property (weak, nonatomic) IBOutlet UIButton *plusButton;
+@property (weak, nonatomic) IBOutlet UIButton *minusButton;
+@property (strong, nonatomic) IBOutletCollection(UIButton)
+    NSArray *nonZeroDigitButtons;
+@property (weak, nonatomic) IBOutlet UILabel *resultLabel;
+@property (weak, nonatomic) IBOutlet UIButton *finishButton;
+@property (weak, nonatomic) IBOutlet UIButton *zeroButton;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.m b/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.m
new file mode 100644
index 0000000..5d26fef
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.m
@@ -0,0 +1,127 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "CalculatorViewController.h"
+
+#import "CalculatedValues.h"
+#import "CoreData.h"
+#import "Equation.h"
+#import "Expression.h"
+#import "Literal.h"
+
+@interface CalculatorViewController ()
+- (void)updateEnabledViews;
+- (void)updateButtonColor:(UIButton *)button;
+@end
+
+@implementation CalculatorViewController {
+  NSMutableArray *_locationStack;
+  NSMutableString *_currentNumber;
+}
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
+  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+  if (self) {
+    self.title = @"Calculator";
+    CoreData *coreData = [[CoreData alloc] init];
+    [coreData verify];
+  }
+  return self;
+}
+
+- (void)viewDidLoad {
+  [super viewDidLoad];
+  _locationStack = [NSMutableArray array];
+  _currentNumber = [NSMutableString stringWithString:@""];
+  [self updateEnabledViews];
+}
+
+- (IBAction)enterDigit:(id)sender {
+  UIButton *button = (UIButton *)sender;
+  [_currentNumber appendString:button.titleLabel.text];
+  self.resultLabel.text = _currentNumber;
+  [self updateEnabledViews];
+}
+
+- (IBAction)finish:(id)sender {
+  if (![_locationStack count]) {
+    _currentNumber = [NSMutableString stringWithString:@""];
+    self.resultLabel.text = @"hello";
+  }
+  if (![_locationStack count]) {
+    _currentNumber = [NSMutableString stringWithString:@""];
+  } else if ([_currentNumber length]) {
+    Equation *last = [_locationStack lastObject];
+    [last addExpressionAsChild:[[Literal alloc] initWithDouble:
+        atof([_currentNumber cStringUsingEncoding:NSUTF8StringEncoding])]];
+    _currentNumber = [NSMutableString stringWithString:@""];
+    self.resultLabel.text = [NSString stringWithFormat:@"%@", last];
+  } else {
+    Equation *popped = [_locationStack lastObject];
+    [_locationStack removeLastObject];
+    [[CalculatedValues sharedInstance] addEquation:popped];
+    self.resultLabel.text =
+        [NSString stringWithFormat:@"%lf", [popped calculate]];
+  }
+  [self updateEnabledViews];
+}
+
+- (IBAction)operate:(id)sender {
+  Operation operation;
+  if ([_currentNumber length]) {
+    // finish the current number first automatically:
+    [self finish:nil];
+  }
+  if (sender == self.multiplyButton) {
+    operation = kMultiply;
+  } else if (sender == self.plusButton) {
+    operation = kAdd;
+  } else if (sender == self.divideButton) {
+    operation = kDivide;
+  } else if (sender == self.minusButton) {
+    operation = kSubtract;
+  } else {
+    // Shouldn't happen
+    operation = kAdd;
+  }
+  Equation *newEquation = [[Equation alloc] initWithOperation:operation];
+  if ([_locationStack count]) {
+    [[_locationStack lastObject] addExpressionAsChild:newEquation];
+  }
+  [_locationStack addObject:newEquation];
+  self.resultLabel.text = [NSString stringWithFormat:@"%@", _locationStack[0]];
+  [self updateEnabledViews];
+}
+
+#pragma mark - Private
+
+
+- (void)updateEnabledViews {
+  self.finishButton.enabled = [_locationStack count] || [_currentNumber length];
+  [self updateButtonColor:self.finishButton];
+  self.zeroButton.enabled = self.finishButton.enabled;
+  [self updateButtonColor:self.zeroButton];
+  BOOL enableNonZeroDigits = ![_currentNumber isEqualToString:@"0"];
+  for (UIButton *digit in self.nonZeroDigitButtons) {
+    digit.enabled = enableNonZeroDigits;
+    [self updateButtonColor:digit];
+  }
+}
+
+- (void)updateButtonColor:(UIButton *)button {
+  button.backgroundColor = button.enabled ?
+      [UIColor whiteColor] : [UIColor grayColor];
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.xib b/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.xib
new file mode 100644
index 0000000..7ed3f42
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CalculatorViewController.xib
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ Copyright 2015 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3742"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CalculatorViewController">
+            <connections>
+                <outlet property="divideButton" destination="STk-6l-Wip" id="gGY-Iy-x7P"/>
+                <outlet property="finishButton" destination="21D-tW-sLR" id="GnM-vO-sHD"/>
+                <outlet property="minusButton" destination="7W2-TS-tLI" id="Wuh-b2-g8J"/>
+                <outlet property="multiplyButton" destination="dwp-YR-bfM" id="MHy-Ot-4Hd"/>
+                <outlet property="plusButton" destination="4rB-gA-S5X" id="9kZ-af-Os4"/>
+                <outlet property="resultLabel" destination="N03-1W-Z1G" id="YjW-BO-1Ta"/>
+                <outlet property="view" destination="1" id="3"/>
+                <outlet property="zeroButton" destination="YUO-Hc-CsJ" id="dgK-Dt-4YR"/>
+                <outletCollection property="nonZeroDigitButtons" destination="2ud-fg-6iP" id="SNy-6m-XHb"/>
+                <outletCollection property="nonZeroDigitButtons" destination="1Od-z8-5N1" id="Iq0-uY-IaD"/>
+                <outletCollection property="nonZeroDigitButtons" destination="1s9-bG-Fyv" id="CZv-no-Ubi"/>
+                <outletCollection property="nonZeroDigitButtons" destination="Y9P-jJ-ztr" id="nfC-U0-yxl"/>
+                <outletCollection property="nonZeroDigitButtons" destination="Iiq-p2-KYo" id="5A3-Y3-95R"/>
+                <outletCollection property="nonZeroDigitButtons" destination="zR0-hJ-XV8" id="5x0-pC-eis"/>
+                <outletCollection property="nonZeroDigitButtons" destination="Y4i-o9-uQp" id="qP7-dC-GQ0"/>
+                <outletCollection property="nonZeroDigitButtons" destination="auh-CA-fzQ" id="NiV-AO-FiS"/>
+                <outletCollection property="nonZeroDigitButtons" destination="CuZ-P3-3iO" id="snu-lY-DUt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="1">
+            <rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="hello" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="N03-1W-Z1G">
+                    <rect key="frame" x="20" y="20" width="280" height="45"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
+                    <fontDescription key="fontDescription" name="CourierNewPS-BoldMT" family="Courier New" pointSize="24"/>
+                    <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                    <nil key="highlightedColor"/>
+                </label>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Y4i-o9-uQp">
+                    <rect key="frame" x="44" y="73" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="7">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="oJx-RX-3SU"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="auh-CA-fzQ">
+                    <rect key="frame" x="123" y="73" width="73" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="8">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="pDd-AA-AXS"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CuZ-P3-3iO">
+                    <rect key="frame" x="205" y="73" width="70" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="9">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="mdP-nK-k9T"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Y9P-jJ-ztr">
+                    <rect key="frame" x="44" y="149" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="4">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="Eye-1S-G5k"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Iiq-p2-KYo">
+                    <rect key="frame" x="123" y="149" width="73" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="5">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="NJt-1M-OKG"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zR0-hJ-XV8">
+                    <rect key="frame" x="205" y="149" width="70" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="6">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="iZc-DU-5Nf"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="2ud-fg-6iP">
+                    <rect key="frame" x="44" y="225" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="1">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="sr8-xD-Dop"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1Od-z8-5N1">
+                    <rect key="frame" x="125" y="225" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="2">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="r1w-Qx-lmh"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1s9-bG-Fyv">
+                    <rect key="frame" x="204" y="225" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="3">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="z3W-9d-k3D"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YUO-Hc-CsJ">
+                    <rect key="frame" x="125" y="301" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="0">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="enterDigit:" destination="-1" eventType="touchUpInside" id="E2G-nh-OjY"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="21D-tW-sLR">
+                    <rect key="frame" x="205" y="301" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="↩">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="finish:" destination="-1" eventType="touchUpInside" id="Gr9-nP-eFW"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4rB-gA-S5X">
+                    <rect key="frame" x="44" y="301" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="+">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="operate:" destination="-1" eventType="touchUpInside" id="pPf-Dl-b44"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dwp-YR-bfM">
+                    <rect key="frame" x="44" y="377" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="✕">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="operate:" destination="-1" eventType="touchUpInside" id="f6K-EQ-j18"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7W2-TS-tLI">
+                    <rect key="frame" x="125" y="377" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="-">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="operate:" destination="-1" eventType="touchUpInside" id="MRD-ct-q82"/>
+                    </connections>
+                </button>
+                <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="STk-6l-Wip">
+                    <rect key="frame" x="205" y="377" width="71" height="68"/>
+                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                    <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
+                    <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="15"/>
+                    <state key="normal" title="÷">
+                        <color key="titleColor" red="1" green="1" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                        <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                    </state>
+                    <connections>
+                        <action selector="operate:" destination="-1" eventType="touchUpInside" id="7cN-RA-mPR"/>
+                    </connections>
+                </button>
+            </subviews>
+            <color key="backgroundColor" red="0.0" green="0.79869981749999996" blue="0.78823562960000004" alpha="1" colorSpace="calibratedRGB"/>
+            <simulatedStatusBarMetrics key="simulatedStatusBarMetrics"/>
+            <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina4"/>
+        </view>
+    </objects>
+</document>
\ No newline at end of file
diff --git a/base_workspace/examples/objc/PrenotCalculator/CoreData.h b/base_workspace/examples/objc/PrenotCalculator/CoreData.h
new file mode 100644
index 0000000..2b55bb1
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CoreData.h
@@ -0,0 +1,23 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+// A simple class to confirm CoreData versioning works properly.
+@interface CoreData : NSObject
+
+// Check that the datamodel was loaded properly.
+- (void)verify;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/CoreData.m b/base_workspace/examples/objc/PrenotCalculator/CoreData.m
new file mode 100644
index 0000000..43a1e89
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/CoreData.m
@@ -0,0 +1,41 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "CoreData.h"
+
+@implementation CoreData
+- (id)init {
+  self = [super init];
+  if (self) {
+
+  }
+  return self;
+}
+
+- (void)verify {
+  NSURL *modelURL = [self modelURL];
+  NSAssert(modelURL,
+           @"Unable to find modelURL given mainBundle: %@",
+           [[NSBundle mainBundle] description]);
+}
+
+#pragma mark Private Methods.
+
+- (NSURL *)modelURL {
+  NSBundle *bundle = [NSBundle bundleForClass:[CoreData class]];
+  NSURL *modelURL = [bundle URLForResource:@"DataModel" withExtension:@"momd"];
+  return modelURL;
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/.xccurrentversion b/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/.xccurrentversion
new file mode 100644
index 0000000..aae30cd
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/.xccurrentversion
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2015 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>_XCCurrentVersionName</key>
+	<string>DataModel-1.1.xcdatamodel</string>
+</dict>
+</plist>
diff --git a/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/DataModel-1.0.xcdatamodel/contents b/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/DataModel-1.0.xcdatamodel/contents
new file mode 100644
index 0000000..1cd3e57
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/DataModel-1.0.xcdatamodel/contents
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ Copyright 2015 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="5063" systemVersion="13C1021" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
+    <entity name="PCModel" representedClassName="PCModel" syncable="YES">
+        <attribute name="one" optional="YES" attributeType="Boolean" syncable="YES"/>
+    </entity>
+    <elements>
+        <element name="PCModel" positionX="0" positionY="0" width="128" height="135"/>
+    </elements>
+</model>
\ No newline at end of file
diff --git a/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/DataModel-1.1.xcdatamodel/contents b/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/DataModel-1.1.xcdatamodel/contents
new file mode 100644
index 0000000..80b28dd
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/DataModel.xcdatamodeld/DataModel-1.1.xcdatamodel/contents
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+ Copyright 2015 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="5063" systemVersion="13C1021" minimumToolsVersion="Xcode 4.3" macOSVersion="Automatic" iOSVersion="Automatic">
+    <entity name="PCModel" representedClassName="PCModel" syncable="YES">
+        <attribute name="one" optional="YES" attributeType="Boolean" syncable="YES"/>
+        <attribute name="two" optional="YES" attributeType="Boolean" syncable="YES"/>
+    </entity>
+    <elements>
+        <element name="PCModel" positionX="0" positionY="0" width="128" height="135"/>
+    </elements>
+</model>
\ No newline at end of file
diff --git a/base_workspace/examples/objc/PrenotCalculator/Equation.h b/base_workspace/examples/objc/PrenotCalculator/Equation.h
new file mode 100644
index 0000000..c04fc70
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Equation.h
@@ -0,0 +1,34 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+#import "Expression.h"
+
+typedef enum {
+  kAdd,
+  kSubtract,
+  kMultiply,
+  kDivide
+} Operation;
+
+@interface Equation : Expression
+
+@property (nonatomic, assign) Operation operation;
+
+- (id)initWithOperation:(Operation)operation;
+- (NSArray *)children;
+- (void)addExpressionAsChild:(Expression *)child;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/Equation.m b/base_workspace/examples/objc/PrenotCalculator/Equation.m
new file mode 100644
index 0000000..4894e82
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Equation.m
@@ -0,0 +1,108 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "Equation.h"
+
+@implementation Equation {
+  NSMutableArray *_children;
+}
+
+@synthesize operation = _operation;
+
+- (id)init {
+  [self doesNotRecognizeSelector:_cmd];
+  return nil;
+}
+
+- (id)initWithOperation:(Operation)operation {
+  self = [super init];
+  if (self) {
+    _children = [NSMutableArray array];
+    _operation = operation;
+  }
+  return self;
+}
+
+- (NSArray *)children {
+  return [_children copy];
+}
+
+- (void)addExpressionAsChild:(Expression *)child {
+  [_children addObject:child];
+}
+
+- (double)calculate {
+  if ([_children count] == 1) {
+    return (_operation == kSubtract)
+        ? -[_children[0] calculate] : [_children[0] calculate];
+  } else if ([_children count] == 0) {
+    return (_operation == kSubtract || _operation == kAdd) ? 0 : 1;
+  }
+  double value = [_children[0] calculate];
+  for (Equation *child in [_children subarrayWithRange:
+      NSMakeRange(1, [_children count] - 1)]) {
+    double childValue = [child calculate];
+    switch (_operation) {
+      case kAdd:
+        value += childValue;
+        break;
+      case kSubtract:
+        value -= childValue;
+        break;
+      case kMultiply:
+        value *= childValue;
+        break;
+      case kDivide:
+        value /= childValue;
+        break;
+    }
+  }
+  return value;
+}
+
+- (NSString *)description {
+  NSMutableString *result = [[NSMutableString alloc] init];
+  [result appendString:@"("];
+  switch (_operation) {
+    case kAdd:
+      [result appendString:@"+"];
+      break;
+    case kSubtract:
+      [result appendString:@"-"];
+      break;
+    case kMultiply:
+      [result appendString:@"*"];
+      break;
+    case kDivide:
+      [result appendString:@"/"];
+      break;
+  }
+  for (Equation *child in _children) {
+    [result appendString:@" "];
+    [result appendString:[child description]];
+  }
+  [result appendString:@")"];
+  return [result copy];
+}
+
+- (BOOL)isEqual:(id)object {
+  if (![object isKindOfClass:[self class]]) {
+    return NO;
+  }
+  Equation *other = object;
+  return other->_operation == _operation &&
+      [other->_children isEqual:_children];
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/Expression.h b/base_workspace/examples/objc/PrenotCalculator/Expression.h
new file mode 100644
index 0000000..f5b2dcf
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Expression.h
@@ -0,0 +1,21 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <Foundation/Foundation.h>
+
+@interface Expression : NSObject
+
+- (double)calculate;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/Expression.m b/base_workspace/examples/objc/PrenotCalculator/Expression.m
new file mode 100644
index 0000000..68e9541
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Expression.m
@@ -0,0 +1,34 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "Expression.h"
+
+@implementation Expression
+
+- (double)calculate {
+  [self doesNotRecognizeSelector:_cmd];
+  return NAN;
+}
+
+- (BOOL)isEqual:(id)object {
+  [self doesNotRecognizeSelector:_cmd];
+  return NO;
+}
+
+- (NSString *)description {
+  [self doesNotRecognizeSelector:_cmd];
+  return nil;
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/Literal.h b/base_workspace/examples/objc/PrenotCalculator/Literal.h
new file mode 100644
index 0000000..62ee13c
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Literal.h
@@ -0,0 +1,21 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "Expression.h"
+
+@interface Literal : Expression
+
+- (id)initWithDouble:(double)value;
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/Literal.m b/base_workspace/examples/objc/PrenotCalculator/Literal.m
new file mode 100644
index 0000000..c103f46
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Literal.m
@@ -0,0 +1,44 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "Literal.h"
+
+@implementation Literal {
+  double _value;
+}
+
+- (id)initWithDouble:(double)value {
+  self = [super init];
+  if (self) {
+    _value = value;
+  }
+  return self;
+}
+
+- (double)calculate {
+  return _value;
+}
+
+- (NSString *)description {
+  return [NSString stringWithFormat:@"%0.2lf", _value];
+}
+
+- (BOOL)isEqual:(id)object {
+  if (![object isKindOfClass:[self class]]) {
+    return NO;
+  }
+  return _value == ((Literal *)object)->_value;
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/PrenotCalculator-Info.plist b/base_workspace/examples/objc/PrenotCalculator/PrenotCalculator-Info.plist
new file mode 100644
index 0000000..178f34c
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/PrenotCalculator-Info.plist
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2015 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleDisplayName</key>
+	<string>PrenotCalculator</string>
+	<key>CFBundleExecutable</key>
+	<string>PrenotCalculator</string>
+	<key>CFBundleIdentifier</key>
+	<string>Google.PrenotCalculator</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>PrenotCalculator</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>
diff --git a/base_workspace/examples/objc/PrenotCalculator/Resources/test.txt b/base_workspace/examples/objc/PrenotCalculator/Resources/test.txt
new file mode 100644
index 0000000..3dc3aa5
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/Resources/test.txt
@@ -0,0 +1 @@
+It worked!
diff --git a/base_workspace/examples/objc/PrenotCalculator/ValuesViewController.h b/base_workspace/examples/objc/PrenotCalculator/ValuesViewController.h
new file mode 100644
index 0000000..27055b9
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/ValuesViewController.h
@@ -0,0 +1,19 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <UIKit/UIKit.h>
+
+@interface ValuesViewController : UITableViewController
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/ValuesViewController.m b/base_workspace/examples/objc/PrenotCalculator/ValuesViewController.m
new file mode 100644
index 0000000..333ea11
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/ValuesViewController.m
@@ -0,0 +1,64 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import "ValuesViewController.h"
+
+#import "CalculatedValues.h"
+
+@interface ValuesViewController ()
+
+@end
+
+@implementation ValuesViewController
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
+  self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+  if (self) {
+    self.title = @"Values";
+  }
+  return self;
+}
+
+#pragma mark - Table view data source
+
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
+  return 1;
+}
+
+- (NSInteger)tableView:(UITableView *)tableView
+    numberOfRowsInSection:(NSInteger)section {
+  return [[[CalculatedValues sharedInstance] values] count];
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView
+         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+  static NSString *CellIdentifier = @"Cell";
+  UITableViewCell *cell =
+      [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
+  if (!cell) {
+    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
+                                  reuseIdentifier:CellIdentifier];
+  }
+
+  cell.textLabel.text =
+      [CalculatedValues sharedInstance].values[[indexPath indexAtPosition:1]];
+
+  return cell;
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+  [self.tableView reloadData];
+}
+
+@end
diff --git a/base_workspace/examples/objc/PrenotCalculator/main.m b/base_workspace/examples/objc/PrenotCalculator/main.m
new file mode 100644
index 0000000..f521bd8
--- /dev/null
+++ b/base_workspace/examples/objc/PrenotCalculator/main.m
@@ -0,0 +1,27 @@
+// Copyright 2015 Google Inc. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#import <UIKit/UIKit.h>
+
+int main(int argc, char * argv[]) {
+  @autoreleasepool {
+    NSString *delegateClassName =
+    #ifndef KIF_TESTS
+        @"AppDelegate";
+    #else
+        @"AppDelegateForKIF";
+    #endif
+    return UIApplicationMain(argc, argv, nil, delegateClassName);
+  }
+}
diff --git a/base_workspace/examples/objc/README.md b/base_workspace/examples/objc/README.md
new file mode 100644
index 0000000..045264f
--- /dev/null
+++ b/base_workspace/examples/objc/README.md
@@ -0,0 +1,17 @@
+Objective C Examples
+======
+
+The example in this directory show typical use of Objective C libraries,
+binaries and imports. Because they build iOS an application they can only be run
+on Mac OSX.
+
+Build the top-level application with
+`bazel build examples/objc:PrenotCalculator`, which when finished prints the
+path to the generated .ipa. which you can then install to your test device. The
+same build will also print the path to an Xcode project directory which you can
+open to continue working with the application in Xcode.
+
+Running `bazel build examples/objc:PrenotCalculatorInstruments` will build and
+run the application to obtain a screenshot, the path to which it then prints.
+
+
diff --git a/base_workspace/examples/objc/expression_prebuilt.a b/base_workspace/examples/objc/expression_prebuilt.a
new file mode 100644
index 0000000..8bb74bb
--- /dev/null
+++ b/base_workspace/examples/objc/expression_prebuilt.a
Binary files differ