diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider_scope_LiteralLink_target_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider_scope_LiteralLink_target_Test.java
index a341d0b..33123c9 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider_scope_LiteralLink_target_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider_scope_LiteralLink_target_Test.java
@@ -22,6 +22,8 @@
 import org.junit.Test;
 
 import com.google.eclipse.protobuf.junit.core.XtextRule;
+import com.google.eclipse.protobuf.protobuf.ComplexValueCurlyBracket;
+import com.google.eclipse.protobuf.protobuf.CustomOption;
 import com.google.eclipse.protobuf.protobuf.DefaultValueFieldOption;
 import com.google.eclipse.protobuf.protobuf.Enum;
 import com.google.eclipse.protobuf.protobuf.FieldOption;
@@ -30,6 +32,7 @@
 import com.google.eclipse.protobuf.protobuf.Message;
 import com.google.eclipse.protobuf.protobuf.MessageField;
 import com.google.eclipse.protobuf.protobuf.Option;
+import com.google.eclipse.protobuf.protobuf.SimpleValueField;
 import com.google.inject.Inject;
 
 /**
@@ -256,6 +259,43 @@
 
   // // Create file sample_proto.proto
   // syntax = "proto2";
+  // package sample;
+  //
+  // extend proto2.MethodOptions {
+  //   optional Foo method = 2910611;
+  // }
+  //
+  // message Foo {
+  //   enum Kind {
+  //     CUSTOM = 1;
+  //     CREATE = 2;
+  //   }
+  //   optional Kind kind = 1 [default = CUSTOM];
+
+  //  syntax = "proto2";
+  //  package example;
+  //  import "sample_proto.proto";
+  //
+  // message Example {
+  //   option (sample.method) = {
+  //     kind: CREATE
+  //   };
+  // }
+  @Test
+  public void should_provide_Literals_for_source_of_simple_value_field() {
+    Message message = xtext.find("Example", " {", Message.class);
+    CustomOption customFieldOption = (CustomOption) message.getElements().get(0);
+    ComplexValueCurlyBracket complexValueCurlyBracket =
+        (ComplexValueCurlyBracket) customFieldOption.getValue();
+    SimpleValueField simpleValueField =
+        (SimpleValueField) complexValueCurlyBracket.getFields().get(0);
+    LiteralLink literalLink = (LiteralLink) simpleValueField.getValues().get(0);
+    IScope scope = scopeProvider.getScope(literalLink, LITERAL_LINK__TARGET);
+    assertThat(descriptionsIn(scope), contain("CREATE"));
+  }
+
+  // // Create file sample_proto.proto
+  // syntax = "proto2";
   // package example;
   //
   // enum Status {
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 ab63d3b..c69fa05 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
@@ -34,6 +34,7 @@
 import com.google.eclipse.protobuf.protobuf.OptionSource;
 import com.google.eclipse.protobuf.protobuf.Package;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
+import com.google.eclipse.protobuf.protobuf.SimpleValueField;
 import com.google.eclipse.protobuf.protobuf.TypeLink;
 import com.google.eclipse.protobuf.protobuf.ValueField;
 import com.google.eclipse.protobuf.util.EResources;
@@ -340,6 +341,9 @@
         indexedElement = ((CustomOption) container).getSource().getTarget();
       }
     }
+    if (container instanceof SimpleValueField) {
+      indexedElement = ((SimpleValueField) container).getName().getTarget();
+    }
     return createNormalizedScopeForIndexedElement(indexedElement, reference);
   }
 
