anchor.diff:  begin
   
     // This should utilize a cache.
  -
  -  //writeln('g');
   
     hll := Fgmr.settings.last('ParrotHLL');
     compiler := create_string('PIR');
  
positive.code:   Parrot_register_pmc(interp, result);
  end;
  
  constructor TDrvParrot.create;
  begin
    //FoutCode := TStringList.Create;
    //FoutData := TStringList.Create;
  
    setlength(cache, 0);
    
    //writeln('e');
    //Parrot_set_config_hash();
    Parrot_srand(0);
    interp := Parrot_new(nil);
    out_pbc := create_string('');
  
    //writeln('f');
  
  end;
  
  function TDrvParrot.genParrot(hllcode: string): Parrot_PMC;
  var
    compiler, errstr: Parrot_String;
  
negative.code: begin
    r := new_pmc('Hash');
  
    // exec
    Parrot_PMC_set_pmc_keyed_str(interp, r, create_string('exec'), genParrot(join(inNode.point.macros)) );
  
    // data
    data := new_pmc('ResizablePMCArray');
    if length(inNode.data) > 0 then
      for i := 0 to length(inNode.data)-1 do
      begin
        writeln(i);
        Parrot_PMC_push_string(interp, data, create_string(inNode.data[i]));
      end;
    Parrot_PMC_set_pmc_keyed_str(interp, r, create_string('data'), data );
  
    // children
  
    result := r;
  end;
  
  procedure TDrvParrot.PCT(inPast: Parrot_PMC);
  