Program: 17066
Project: 17066
Buggy source:
private void processField(IJstProperty jsPropertyMeta,boolean isProps,boolean isGlobal){
  IJSSourceElementRequestor.JSFieldInfo fieldInfo=new IJSSourceElementRequestor.JSFieldInfo();
  fieldInfo.name=jsPropertyMeta.getName().getName();
  if (jsPropertyMeta.getType() != null) {
    String fieldType=jsPropertyMeta.getType().getName();
    fieldInfo.m_type=fieldType;
  }
 else {
    fieldInfo.m_type="String_Node_Str";
  }
  JstSource nameSource=jsPropertyMeta.getName().getSource();
  JstSource source=jsPropertyMeta.getSource();
  fieldInfo.declarationStart=source != null ? source.getStartOffSet() : ZERO_OFFSET;
  JstModifiers jstModifiers=jsPropertyMeta.getModifiers();
  fieldInfo.modifiers=isGlobal ? Modifiers.AccGlobal : Util.getModifiers(jstModifiers);
  if (isProps) {
    fieldInfo.m_initializationSource=getSourceWithoutQuates(jsPropertyMeta.getValue());
  }
  int start=nameSource != null ? nameSource.getStartOffSet() : ZERO_OFFSET;
  int end=getEndOffset(nameSource);
  fieldInfo.nameSourceStart=start;
  fieldInfo.nameSourceEnd=end;
  if (jsPropertyMeta instanceof JstProxyProperty) {
    IJstType actualOwnerType=jsPropertyMeta.getOwnerType();
    String groupName=actualOwnerType.getPackage().getGroupName();
    URI uri=typeSpaceMgr.getTypeToFileMap().get(groupName + "String_Node_Str" + actualOwnerType.getName());
    if (uri != null) {
      IFile actualResource=ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toString()));
      if (actualResource.exists())       fieldInfo.resource=actualResource;
    }
  }
  fRequestor.enterField(fieldInfo);
  if (jsPropertyMeta instanceof JstProperty && jsPropertyMeta.getType() instanceof JstObjectLiteralType && jsPropertyMeta.getType().getRootType().isOType()) {
    List<IJstProperty> properties=jsPropertyMeta.getType().getProperties();
    for (    IJstProperty iJstProperty : properties) {
      processField(iJstProperty,false,false);
    }
  }
  fRequestor.exitField(getEndOffset(source));
}

Fixed version (ground truth):
private void processField(IJstProperty jsPropertyMeta,boolean isProps,boolean isGlobal){
  IJSSourceElementRequestor.JSFieldInfo fieldInfo=new IJSSourceElementRequestor.JSFieldInfo();
  fieldInfo.name=jsPropertyMeta.getName().getName();
  final IJstType propertyType=jsPropertyMeta.getType();
  if (propertyType != null) {
    String fieldType=null;
    if (propertyType instanceof JstFuncType) {
      fieldType=getFullMethodString(fieldInfo.name,((JstFuncType)propertyType).getFunction(),jsPropertyMeta.getOwnerType(),false);
    }
 else {
      fieldType=jsPropertyMeta.getType().getName();
    }
    fieldInfo.m_type=fieldType;
  }
 else {
    fieldInfo.m_type="String_Node_Str";
  }
  JstSource nameSource=jsPropertyMeta.getName().getSource();
  JstSource source=jsPropertyMeta.getSource();
  fieldInfo.declarationStart=source != null ? source.getStartOffSet() : ZERO_OFFSET;
  JstModifiers jstModifiers=jsPropertyMeta.getModifiers();
  fieldInfo.modifiers=isGlobal ? Modifiers.AccGlobal : Util.getModifiers(jstModifiers);
  if (isProps) {
    fieldInfo.m_initializationSource=getSourceWithoutQuates(jsPropertyMeta.getValue());
  }
  int start=nameSource != null ? nameSource.getStartOffSet() : ZERO_OFFSET;
  int end=getEndOffset(nameSource);
  fieldInfo.nameSourceStart=start;
  fieldInfo.nameSourceEnd=end;
  if (jsPropertyMeta instanceof JstProxyProperty) {
    IJstType actualOwnerType=jsPropertyMeta.getOwnerType();
    String groupName=actualOwnerType.getPackage().getGroupName();
    URI uri=typeSpaceMgr.getTypeToFileMap().get(groupName + "String_Node_Str" + actualOwnerType.getName());
    if (uri != null) {
      IFile actualResource=ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uri.toString()));
      if (actualResource.exists())       fieldInfo.resource=actualResource;
    }
  }
  fRequestor.enterField(fieldInfo);
  if (jsPropertyMeta instanceof JstProperty && jsPropertyMeta.getType() instanceof JstObjectLiteralType && jsPropertyMeta.getType().getRootType().isOType()) {
    List<IJstProperty> properties=jsPropertyMeta.getType().getProperties();
    for (    IJstProperty iJstProperty : properties) {
      processField(iJstProperty,false,false);
    }
  }
  fRequestor.exitField(getEndOffset(source));
}