method vtype t =
    match t with 
      TComp(cinfo, _, _) ->
        if(not (List.exists (fun x -> cinfo.cname = x) !visited )) then begin
          visited := cinfo.cname :: !visited;
          List.iter 
            (fun f -> 
              if (hasAttribute target f.fattr) then 
                rflag := true
              else
                ignore(visitCilType (new attribute_checker target rflag) 
                         f.ftype)) cinfo.cfields;
        end;
        DoChildren        
    | TNamed(t1, _a) ->
        if(not (List.exists (fun x -> t1.tname = x) !visited )) then begin
          visited := t1.tname :: !visited;
          ignore(visitCilType (new attribute_checker target rflag) t1.ttype);
        end;
        DoChildren
    | _ ->
        DoChildren