anchor.diff:    i:Integer;
   begin
     Result := -1;
  -  for i := 0 to FChildren.Count - 1 do
  -  begin
  -    if CompareText(Items[i].FName.AsString, pvName) = 0 then
  -    begin
  -      Result := i;
  -      Break;
  +  if Assigned(FChildren) then   
  +    for i := 0 to FChildren.Count - 1 do
  +    begin
  +      if CompareText(Items[i].FName.AsString, pvName) = 0 then
  +      begin
  +        Result := i;
  +        Break;
  +      end;
       end;
  -  end;
   end;
   
   function TDValueNode.InnerFindByPath(pvPath: string; var vParent:TDValueNode;
  
positive.code:     vdtStringW:
        Result := ADValue.Value.AsStringW^;
      vdtUnset:
        Result := 'default';
      vdtNull:
        Result := 'null';
      vdtBoolean:
        Result := BoolToStr(ADValue.Value.AsBoolean, True);
      vdtSingle:
  
negative.code: 
  function TDValueNode.RemoveByName(pvName:String): Integer;
  begin
  
    Result := IndexOf(pvName);
    if Result >= 0 then
    begin
  