Fixed: [Issue 229] Type references in nested messages not found.

https://code.google.com/p/protobuf-dt/issues/detail?id=229
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/bugs/Issue229_ReferenceToTypeFromNestedMessage.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/bugs/Issue229_ReferenceToTypeFromNestedMessage.java
new file mode 100644
index 0000000..df05b72
--- /dev/null
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/bugs/Issue229_ReferenceToTypeFromNestedMessage.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2012 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package com.google.eclipse.protobuf.bugs;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+import static com.google.eclipse.protobuf.junit.core.UnitTestModule.unitTestModule;
+import static com.google.eclipse.protobuf.junit.core.XtextRule.overrideRuntimeModuleWith;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+import com.google.eclipse.protobuf.junit.core.XtextRule;
+import com.google.eclipse.protobuf.protobuf.ExtensibleType;
+import com.google.eclipse.protobuf.protobuf.TypeExtension;
+
+/**
+ * Tests fix for <a href="http://code.google.com/p/protobuf-dt/issues/detail?id=229">Issue 229</a>.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class Issue229_ReferenceToTypeFromNestedMessage {
+  @Rule public XtextRule xtext = overrideRuntimeModuleWith(unitTestModule());
+
+  // syntax = "proto2";
+  //
+  // message OuterProto {
+  //   message ProtoWithExtensions {
+  //     required string string_value = 1;
+  //     extensions 100 to max;
+  //   }
+  //
+  //   message Extension {
+  //     extend ProtoWithExtensions {
+  //       optional Extension the_extension = 100;
+  //     }
+  //     required string string_value = 1;
+  //   }
+  // }
+  @Test public void should_recognize_extendMessage_in_nestedMessage() {
+    TypeExtension extension = xtext.findFirst(TypeExtension.class);
+    ExtensibleType extended = extension.getType().getTarget();
+    assertThat(extended.getName(), equalTo("ProtoWithExtensions"));
+  }
+}
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
index 6e6eeea..53e57a8 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
@@ -94,17 +94,14 @@
 
   @SuppressWarnings("unused")
   public IScope scope_ExtensibleTypeLink_target(ExtensibleTypeLink link, EReference r) {
-    Protobuf root = modelObjects.rootOf(link);
-    Collection<IEObjectDescription> extensibleTypes = extensibleTypes(root);
+    EObject c = link.eContainer();
+    Collection<IEObjectDescription> extensibleTypes =
+        modelElementFinder.find(c, complexTypeFinderDelegate, ExtensibleType.class);
     return createScope(extensibleTypes);
   }
 
   @Override public Collection<IEObjectDescription> potentialExtensibleTypesFor(TypeExtension extension) {
     Protobuf root = modelObjects.rootOf(extension);
-    return extensibleTypes(root);
-  }
-
-  private Collection<IEObjectDescription> extensibleTypes(Protobuf root) {
     return modelElementFinder.find(root, complexTypeFinderDelegate, ExtensibleType.class);
   }