diff --git a/BindingDemo/app/build.gradle b/BindingDemo/app/build.gradle
index c5e740a..fa31ed0 100644
--- a/BindingDemo/app/build.gradle
+++ b/BindingDemo/app/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 apply plugin: 'com.android.application'
 apply plugin: 'com.birbit.android.databinding'
 
diff --git a/BindingDemo/app/src/main/AndroidManifest.xml b/BindingDemo/app/src/main/AndroidManifest.xml
index 15e9dd0..d2a806c 100644
--- a/BindingDemo/app/src/main/AndroidManifest.xml
+++ b/BindingDemo/app/src/main/AndroidManifest.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.birbit.android.bindingdemo" >
 
diff --git a/BindingDemo/app/src/main/res/layout/list_item.xml b/BindingDemo/app/src/main/res/layout/list_item.xml
index 351db09..3d945f2 100644
--- a/BindingDemo/app/src/main/res/layout/list_item.xml
+++ b/BindingDemo/app/src/main/res/layout/list_item.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:card_view="http://schemas.android.com/apk/res-auto"
     xmlns:bind="http://schemas.android.com/apk/res-auto"
diff --git a/BindingDemo/app/src/main/res/layout/main_activity.xml b/BindingDemo/app/src/main/res/layout/main_activity.xml
index 02513ef..0d42f16 100644
--- a/BindingDemo/app/src/main/res/layout/main_activity.xml
+++ b/BindingDemo/app/src/main/res/layout/main_activity.xml
@@ -1,3 +1,19 @@
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:bind="http://schemas.android.com/apk/res-auto"
     xmlns:bind_static="http://schemas.android.com/apk/res-auto"
diff --git a/BindingDemo/app/src/main/res/menu/menu_main.xml b/BindingDemo/app/src/main/res/menu/menu_main.xml
index b1cb908..ab38265 100644
--- a/BindingDemo/app/src/main/res/menu/menu_main.xml
+++ b/BindingDemo/app/src/main/res/menu/menu_main.xml
@@ -1,3 +1,19 @@
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
diff --git a/BindingDemo/app/src/main/res/values-w820dp/dimens.xml b/BindingDemo/app/src/main/res/values-w820dp/dimens.xml
index 63fc816..793d18d 100644
--- a/BindingDemo/app/src/main/res/values-w820dp/dimens.xml
+++ b/BindingDemo/app/src/main/res/values-w820dp/dimens.xml
@@ -1,3 +1,19 @@
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <resources>
     <!-- Example customization of dimensions originally defined in res/values/dimens.xml
          (such as screen margins) for screens with more than 820dp of available width. This
diff --git a/BindingDemo/app/src/main/res/values/dimens.xml b/BindingDemo/app/src/main/res/values/dimens.xml
index 017b343..7c360c6 100644
--- a/BindingDemo/app/src/main/res/values/dimens.xml
+++ b/BindingDemo/app/src/main/res/values/dimens.xml
@@ -1,3 +1,19 @@
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <resources>
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
diff --git a/BindingDemo/app/src/main/res/values/strings.xml b/BindingDemo/app/src/main/res/values/strings.xml
index f9cedad..ea6f485 100644
--- a/BindingDemo/app/src/main/res/values/strings.xml
+++ b/BindingDemo/app/src/main/res/values/strings.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <resources>
 
     <string name="app_name">BindingDemo</string>
diff --git a/BindingDemo/app/src/main/res/values/styles.xml b/BindingDemo/app/src/main/res/values/styles.xml
index 766ab99..00d89fa 100644
--- a/BindingDemo/app/src/main/res/values/styles.xml
+++ b/BindingDemo/app/src/main/res/values/styles.xml
@@ -1,3 +1,19 @@
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <resources>
 
     <!-- Base application theme. -->
diff --git a/BindingDemo/build.gradle b/BindingDemo/build.gradle
index f4dc394..ca00863 100644
--- a/BindingDemo/build.gradle
+++ b/BindingDemo/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
diff --git a/BindingDemo/gradle.properties b/BindingDemo/gradle.properties
index 1d3591c..f60a634 100644
--- a/BindingDemo/gradle.properties
+++ b/BindingDemo/gradle.properties
@@ -1,3 +1,19 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# 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.
+#
+
 # Project-wide Gradle settings.
 
 # IDE (e.g. Android Studio) users:
diff --git a/BindingDemo/gradle/wrapper/gradle-wrapper.properties b/BindingDemo/gradle/wrapper/gradle-wrapper.properties
index ffaa281..ddbd613 100644
--- a/BindingDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/BindingDemo/gradle/wrapper/gradle-wrapper.properties
@@ -1,3 +1,19 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# 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.
+#
+
 #Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
diff --git a/BindingDemo/settings.gradle b/BindingDemo/settings.gradle
index e7b4def..c465666 100644
--- a/BindingDemo/settings.gradle
+++ b/BindingDemo/settings.gradle
@@ -1 +1,17 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 include ':app'
diff --git a/build.gradle b/build.gradle
index a672313..d477089 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 apply plugin: 'java'
 
 sourceCompatibility = 1.7
diff --git a/compiler/build.gradle b/compiler/build.gradle
index eb1796f..4339b9c 100644
--- a/compiler/build.gradle
+++ b/compiler/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 apply plugin: 'java'
 apply plugin: "kotlin"
 apply plugin: 'maven'
diff --git a/compiler/src/main/java/com/example/databinding/LayoutParser.java b/compiler/src/main/java/com/example/databinding/LayoutParser.java
index 0b20765..ed7fa6b 100644
--- a/compiler/src/main/java/com/example/databinding/LayoutParser.java
+++ b/compiler/src/main/java/com/example/databinding/LayoutParser.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.example.databinding;
 
 import com.android.databinding.util.ClassAnalyzer;
diff --git a/compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt b/compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt
index 087dec2..5d3ab16 100644
--- a/compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/ext/list_ext.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.ext
 
 import com.android.databinding.ext.toCamelCase
diff --git a/compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt b/compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt
index c52bec7..8da13bf 100644
--- a/compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/ext/node_ext.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.ext
 
 import org.w3c.dom.Node
diff --git a/compiler/src/main/kotlin/com/android/databinding/ext/string_ext.kt b/compiler/src/main/kotlin/com/android/databinding/ext/string_ext.kt
index e12b964..2c9fcc1 100644
--- a/compiler/src/main/kotlin/com/android/databinding/ext/string_ext.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/ext/string_ext.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.ext
 
 import com.android.databinding.ext.joinToCamelCase
diff --git a/compiler/src/main/kotlin/com/android/databinding/main.kt b/compiler/src/main/kotlin/com/android/databinding/main.kt
index e22824e..70d69d6 100644
--- a/compiler/src/main/kotlin/com/android/databinding/main.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/main.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding
 
 import org.w3c.dom.Document
diff --git a/compiler/src/main/kotlin/com/android/databinding/parser/expression_parser.kt b/compiler/src/main/kotlin/com/android/databinding/parser/expression_parser.kt
index bd3d0c4..89a5a06 100644
--- a/compiler/src/main/kotlin/com/android/databinding/parser/expression_parser.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/parser/expression_parser.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.parser
 
 import org.antlr.v4.runtime.ANTLRInputStream
diff --git a/compiler/src/main/kotlin/com/android/databinding/parser/expressions.kt b/compiler/src/main/kotlin/com/android/databinding/parser/expressions.kt
index 196dc43..67d3109 100644
--- a/compiler/src/main/kotlin/com/android/databinding/parser/expressions.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/parser/expressions.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.parser
 
 import kotlin.properties.Delegates
diff --git a/compiler/src/main/kotlin/com/android/databinding/renderer/attr_renderer.kt b/compiler/src/main/kotlin/com/android/databinding/renderer/attr_renderer.kt
index 8d9fb93..da9b33f 100644
--- a/compiler/src/main/kotlin/com/android/databinding/renderer/attr_renderer.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/renderer/attr_renderer.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 /**
  * Created by yboyar on 11/10/14.
  */
diff --git a/compiler/src/main/kotlin/com/android/databinding/renderer/binding_br_renderer.kt b/compiler/src/main/kotlin/com/android/databinding/renderer/binding_br_renderer.kt
index 3dda574..a8ca60f 100644
--- a/compiler/src/main/kotlin/com/android/databinding/renderer/binding_br_renderer.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/renderer/binding_br_renderer.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 /**
  * Created by yboyar on 11/9/14.
  */
diff --git a/compiler/src/main/kotlin/com/android/databinding/renderer/data_binder_renderer.kt b/compiler/src/main/kotlin/com/android/databinding/renderer/data_binder_renderer.kt
index 0e69df9..0e18c1e 100644
--- a/compiler/src/main/kotlin/com/android/databinding/renderer/data_binder_renderer.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/renderer/data_binder_renderer.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 /**
  * Created by yboyar on 11/8/14.
  */
diff --git a/compiler/src/main/kotlin/com/android/databinding/renderer/view_expr_binder_renderer.kt b/compiler/src/main/kotlin/com/android/databinding/renderer/view_expr_binder_renderer.kt
index 7c8586b..dfe198b 100644
--- a/compiler/src/main/kotlin/com/android/databinding/renderer/view_expr_binder_renderer.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/renderer/view_expr_binder_renderer.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.renderer
 import com.android.databinding.renderer.BrRenderer
 import com.android.databinding.ext.toCamelCase
diff --git a/compiler/src/main/kotlin/com/android/databinding/util/Log.kt b/compiler/src/main/kotlin/com/android/databinding/util/Log.kt
index 111d1d5..e8fe446 100644
--- a/compiler/src/main/kotlin/com/android/databinding/util/Log.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/util/Log.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.util
 
 object Log {
diff --git a/compiler/src/main/kotlin/com/android/databinding/util/class_analyzer.kt b/compiler/src/main/kotlin/com/android/databinding/util/class_analyzer.kt
index 4de4765..50b65f1 100644
--- a/compiler/src/main/kotlin/com/android/databinding/util/class_analyzer.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/util/class_analyzer.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.util
 
 import java.net.URLClassLoader
diff --git a/compiler/src/main/kotlin/com/android/databinding/vo/vo.kt b/compiler/src/main/kotlin/com/android/databinding/vo/vo.kt
index 04814f2..6789bd9 100644
--- a/compiler/src/main/kotlin/com/android/databinding/vo/vo.kt
+++ b/compiler/src/main/kotlin/com/android/databinding/vo/vo.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.vo
 
 import com.android.databinding.parser.ExprModel
diff --git a/compiler/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties b/compiler/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties
index ada6a54..d09f506 100644
--- a/compiler/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties
+++ b/compiler/src/main/resources/META-INF/gradle-plugins/com.android.databinding.properties
@@ -1 +1,17 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# 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.
+#
+
 implementation-class=com.android.databinding.DataBinderPlugin
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index e9779a3..37623e8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,19 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# 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.
+#
+
 org.gradle.daemon=true
 #org.gradle.fork=true
 org.gradle.jvmargs=-XX:MaxPermSize=512m -Xmx1024m -Dfile.encoding=UTF-8
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 43e2898..37c1f85 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,3 +1,19 @@
+#
+# Copyright (C) 2014 The Android Open Source Project
+#
+# 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.
+#
+
 #Tue Nov 18 17:13:29 PST 2014
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
diff --git a/gradlePlugin/build.gradle b/gradlePlugin/build.gradle
index 9219bfb..f7f13a4 100644
--- a/gradlePlugin/build.gradle
+++ b/gradlePlugin/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 apply plugin: 'java'
 apply plugin: "kotlin"
 apply plugin: 'maven'
diff --git a/gradlePlugin/src/main/kotlin/plugin.kt b/gradlePlugin/src/main/kotlin/plugin.kt
index 55fa214..2e94839 100644
--- a/gradlePlugin/src/main/kotlin/plugin.kt
+++ b/gradlePlugin/src/main/kotlin/plugin.kt
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding
 
 import org.gradle.api.Plugin
diff --git a/grammerBuilder/build.gradle b/grammerBuilder/build.gradle
index d793729..fe54422 100644
--- a/grammerBuilder/build.gradle
+++ b/grammerBuilder/build.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 apply plugin: 'java'
 apply plugin:'application'
 apply plugin: 'maven'
diff --git a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java
index 51f2fee..200137f 100644
--- a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java
+++ b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseListener.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Generated from DataBinder.g4 by ANTLR 4.4
 package com.android.databinding;
 
diff --git a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java
index 8355162..61ce6d9 100644
--- a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java
+++ b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderBaseVisitor.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Generated from DataBinder.g4 by ANTLR 4.4
 package com.android.databinding;
 import org.antlr.v4.runtime.Token;
diff --git a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java
index a0d70a8..043eda1 100644
--- a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java
+++ b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderLexer.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Generated from DataBinder.g4 by ANTLR 4.4
 package com.android.databinding;
 import org.antlr.v4.runtime.Lexer;
diff --git a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java
index 12adab7..9122741 100644
--- a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java
+++ b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderListener.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Generated from DataBinder.g4 by ANTLR 4.4
 package com.android.databinding;
 import org.antlr.v4.runtime.Token;
diff --git a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java
index a4d306e..a6b4d3c 100644
--- a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java
+++ b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderParser.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Generated from DataBinder.g4 by ANTLR 4.4
 package com.android.databinding;
 import org.antlr.v4.runtime.atn.*;
diff --git a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java
index 148188e..c4a3980 100644
--- a/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java
+++ b/grammerBuilder/src/main/java-gen/com/android/databinding/DataBinderVisitor.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Generated from DataBinder.g4 by ANTLR 4.4
 package com.android.databinding;
 import org.antlr.v4.runtime.Token;
diff --git a/grammerBuilder/src/main/java/com/android/databinder/parser/Main.java b/grammerBuilder/src/main/java/com/android/databinder/parser/Main.java
index 861289b..51c40f5 100644
--- a/grammerBuilder/src/main/java/com/android/databinder/parser/Main.java
+++ b/grammerBuilder/src/main/java/com/android/databinder/parser/Main.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinder.parser;
 
 import org.antlr.v4.runtime.ANTLRInputStream;
diff --git a/library/build.gradle b/library/build.gradle
index a5b9cec..4ed3de8 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -1,4 +1,20 @@
 
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
diff --git a/library/src/main/AndroidManifest.xml b/library/src/main/AndroidManifest.xml
index 77d734f..8596caf 100644
--- a/library/src/main/AndroidManifest.xml
+++ b/library/src/main/AndroidManifest.xml
@@ -1,3 +1,19 @@
+<!--
+  Copyright (C) 2014 The Android Open Source Project
+
+  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.
+  -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.android.databinding.library">
 
diff --git a/library/src/main/java/com/android/databinding/library/BaseObservable.java b/library/src/main/java/com/android/databinding/library/BaseObservable.java
index 1b4b6a7..d617f70 100644
--- a/library/src/main/java/com/android/databinding/library/BaseObservable.java
+++ b/library/src/main/java/com/android/databinding/library/BaseObservable.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 import java.util.concurrent.CopyOnWriteArraySet;
diff --git a/library/src/main/java/com/android/databinding/library/DataBinder.java b/library/src/main/java/com/android/databinding/library/DataBinder.java
index 3241cd8..ed9ce66 100644
--- a/library/src/main/java/com/android/databinding/library/DataBinder.java
+++ b/library/src/main/java/com/android/databinding/library/DataBinder.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 import android.content.Context;
diff --git a/library/src/main/java/com/android/databinding/library/DataBinderMapper.java b/library/src/main/java/com/android/databinding/library/DataBinderMapper.java
index 60fe165..fd86309 100644
--- a/library/src/main/java/com/android/databinding/library/DataBinderMapper.java
+++ b/library/src/main/java/com/android/databinding/library/DataBinderMapper.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 import android.view.View;
diff --git a/library/src/main/java/com/android/databinding/library/IViewDataBinder.java b/library/src/main/java/com/android/databinding/library/IViewDataBinder.java
index 9f3adca..7071bd8 100644
--- a/library/src/main/java/com/android/databinding/library/IViewDataBinder.java
+++ b/library/src/main/java/com/android/databinding/library/IViewDataBinder.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 import android.view.View;
diff --git a/library/src/main/java/com/android/databinding/library/Observable.java b/library/src/main/java/com/android/databinding/library/Observable.java
index ad43388..bdec345 100644
--- a/library/src/main/java/com/android/databinding/library/Observable.java
+++ b/library/src/main/java/com/android/databinding/library/Observable.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 /**
diff --git a/library/src/main/java/com/android/databinding/library/ObservableHelper.java b/library/src/main/java/com/android/databinding/library/ObservableHelper.java
index 78b4755..a5ec6e3 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableHelper.java
+++ b/library/src/main/java/com/android/databinding/library/ObservableHelper.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 import java.util.concurrent.CopyOnWriteArraySet;
diff --git a/library/src/main/java/com/android/databinding/library/ObservableListener.java b/library/src/main/java/com/android/databinding/library/ObservableListener.java
index 3fa618d..3baad1b 100644
--- a/library/src/main/java/com/android/databinding/library/ObservableListener.java
+++ b/library/src/main/java/com/android/databinding/library/ObservableListener.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 /**
diff --git a/library/src/main/java/com/android/databinding/library/ViewDataBinder.java b/library/src/main/java/com/android/databinding/library/ViewDataBinder.java
index ad7858a..f1a3bf5 100644
--- a/library/src/main/java/com/android/databinding/library/ViewDataBinder.java
+++ b/library/src/main/java/com/android/databinding/library/ViewDataBinder.java
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 package com.android.databinding.library;
 
 import android.util.SparseIntArray;
diff --git a/settings.gradle b/settings.gradle
index 3f3063f..dda84f9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * 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.
+ */
+
 rootProject.name = 'KDataBinder'
 
 include ':grammerBuilder'
