public String getValue(ITreeNode node, int column) {
   if (node.value() instanceof Profile) {
     switch (column) {
       case 0:
         return ((Profile) node.value()).getThreadName();
       default:
         return "";
     }
   }
   if (node.value() instanceof MethodStats) {
     switch (column) {
       case 0:
         final MethodIdentifier id = resolver.getRawMethodName(((MethodStats) node.value()));
         return id == null ? "<unknown method>" : id.toString();
       case 1:
         return "" + ((MethodStats) node.value()).getInvocationCount();
       case 2:
         return format(((MethodStats) node.value()).getTotalTimeMillis());
       case 3:
         final double percentageOfParentTime =
             100 * ((MethodStats) node.value()).getPercentageOfParentTime();
         return format(percentageOfParentTime);
       case 4:
         return format(((MethodStats) node.value()).getOwnTimeMillis());
       default:
     }
   }
   return "";
 }